Назад | Перейти на главную страницу

Выполнение сценария с ./script.sh завершается ошибкой, пока работает «sh script.sh»

Я очень озадачен этой ошибкой и даже не знаю, что искать в Google:

Неудача - Выполнение скрипта с:

./test.sh 
bash: ./test.sh: "Permission denied" 

Работает - пока работают эти аппореши:

sh ./test.sh
Works
bash ./test.sh
Works

Тестовый сценарий:

cat test.sh 
#!/bin/bash

echo "Works"

Со всеми правами на исполнение:

chmod 777 test.sh

ls -als test.sh 
4 -rwxrwxrwx 1 edo edo 27 13. Feb 10:41 test.sh

Я совершенно не понимаю, почему это происходит, поскольку для меня это не имеет никакого смысла, и я не знаю, какие слова использовать Google, чтобы правильно описать поведение ...

Выполнение сценария в зависимости от строки shebang работает совершенно иначе, чем его передача в качестве аргумента в оболочку.

В первом случае файл должен находиться в исполняемом разделе и содержать допустимую строку shebang для существующей оболочки.

В последнем случае ничего из этого не требуется, так как оболочка, с которой вы вызываете скрипт, берет на себя ответственность за эти вещи.

ОБРАТИТЕ ВНИМАНИЕ, что вы также не используете ту же оболочку для этих тестов: первая подразумевает bash, а вторая использует sh.

Я предполагаю, что раздел, на котором находится ваш скрипт, не позволяет его выполнение; mount -v скажу вам, если это так.