Команды ввели в терминале:
chmod 777 abc.sh
sudo ./abc.sh
Каждая программная оболочка дает ту же ошибку:
.sh: command not found
Включая это простое abc.sh
программа:
#!/bin/bash
# My first script
echo "Hello World!"
Вывод sudo od -c ./abc.sh
:
0000000 # ! / b i n / b a s h \n # M y
0000020 f i r s t s c r i p t \n \n e
0000040 c h o " H e l l o W o r l d
0000060 ! " \n \n
0000064
Исследуйте вывод этого (из каталога, где abc.sh находится):
$ type ./abc.sh
$ ./abc.sh
type
команда сначала проверит, что Ваш./abc.sh найден. Если это не будет это, то выйдет из высказывания, что это не может найти ./abc.sh
файл. Затем мы должны были бы узнать то, что это об имени файла, которым это не может быть найдено.
Кроме того, что является именем редактора, которого Вы используете для создания файла сценария. При непреднамеренном использовании редактирования Windows (через вино), это может вызвать проблемы с разделителями строки в сценарии.
Попытайтесь использовать и редактирование такой как nano
или gedit
. Вы могли бы использовать одного из тех рекомендуемых редакторов и создать тот же файл в качестве примера как, abc1.sh
и удостоверьтесь, чтобы у Вас были строки точно, как они находятся в Вашем отредактированном вопросе.
Между прочим, единственный способ, которым я могу воспроизвести сообщение об ошибке, что Вы дали в своем вопросе, путем игнорирования abc
часть abc.sh
файл.
Эти команды произведут ошибку Вашего сообщения:
$ ./.sh
$ sudo .sh
Следует иметь в виду, что каждая ошибка уникальна и важна в диагностировании проблемы. Важно протестировать и потребовать сценарий и дать точное сообщение об ошибке.
Например, a permission denied
ошибка могла быть вызвана путем попытки выполнить файл, который не имеет набора битов выполнения. Это может быть установлено путем выполнения команды, на которую Вы ссылаетесь в своем вопросе:
$ chmod 777 abc.sh
Вы могли также добраться permission denied
ошибка путем попытки выполнить файл это, которое принадлежит root
и не имеет мира или набора битов группы для чтения. Это может быть побочным эффектом использования sudo
в Вашем личном пространстве, когда это не необходимо. chmod 777
то, что Вы упомянули в своем вопросе, также разрешит что проблема путем предоставления разрешения чтения и выполнения всем пользователям.
При создании файла в таким образом, что он принадлежит корню, необходимо будет использовать поднятую команду для изменения свойств. Это предоставит Вам доступ для выполнения файла:
$ sudo chmod 777 abc.sh
Если у Вас есть причина управлять, кто может выполнить или получить доступ к сценарию, Вы могли бы смотреть на некоторые из других опций chmod
:
$ man chmod
Как предложено в комментариях к Вашему вопросу, Вы не должны использовать поднятую команду sudo
запускать скрипты, которые Вы тестируете. Если тестирование находится в Вашем личном пространстве, можно заставить области личного пространства становиться принадлежавшими корню... теряющему персональный доступ к тем областям. Некоторые плохие сформированные сценарии могли также вызвать повреждение к другим системным файлам нашей ОС. Ввод с опечатками Вашей попытки работать abc.sh
сценарий является примером, что ошибки могут произойти. Если бы Вы решили удалить свой рабочий каталог сценария или сценария и по ошибке имели пространство в неправильном месте, то он мог вызвать серьезные проблемы, где Вы меньше всего ожидаете.
Ну, от того, что Вы сказали нам, это должно работать отлично... Это - то, если раздел это хранится на поддержках unix/posix полномочия стиля. Я сталкиваюсь с этой ошибкой все время, если я пытаюсь запустить скрипт от vfat или ntfs раздела. Рассмотрение это смонтировано в месте, названном работой, является этим на Карте памяти с жиром, или ntfs отформатировал раздел? Если это, необходимо снабдить префиксом оболочку перед сценарием. Проверьте раздел, и это могло бы быть проблемой. Переместите его в свой корневой каталог, и это могло бы работать легко в файловой системе, которая поддерживает unix/posix полномочия.
Проверка, если это так:
mount |grep nisheet
Делает, говорят vfat, fuseblock или ntfs? Раз так...
Две опции:
bash abc.sh
Исключая:
mv abc.sh ~/
cd ~
chmod +x abc.sh
./abc.sh
Если скрипт находится в каталоге, в котором вы сейчас находитесь, вы должны использовать:
. abc.sh
вместо:
./abc.sh
при условии, что у вашего пользователя есть разрешения.