Я'учусь по этому учебнику изучать bash скрипты, чтобы автоматизировать несколько задач для меня. Я подключаюсь к серверу с помощью putty.
Скрипт, расположенный в .../Documents/LOG
, имеет следующий вид:
#!/bin/bash
# My first script
echo "Hello World!"
И я выполнил следующее для получения разрешений на чтение/запись/выполнение
chmod 755 my_script
Затем, когда я ввожу ./my_script
, я получаю ошибку, указанную в заголовке.
Некоторые похожие вопросы хотели увидеть, поэтому я думаю, что они могут помочь:
which bash
/bin/bash
и
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh
Я пробовал добавить текущий каталог в PATH
, но это не работает...
Я сталкивался с этой проблемой при создании сценариев в Windows env, а затем переносе их для запуска в среде Unix.
Попробуйте запустить dos2unix
на скрипте:
http://dos2unix.sourceforge.net/
Или просто перепишите скрипт в Unix env с помощью vi
и протестируйте.
Unix использует другие окончания строк, поэтому не может прочитать файл, который вы создали в Windows. Поэтому он воспринимает ^M как недопустимый символ.
Если вы хотите написать файл в Windows и затем перенести его, убедитесь, что ваш редактор настроен на создание файлов в формате UNIX.
В Notepad++ в правом нижнем углу экрана указывается формат документа. По умолчанию там написано Dos\Windows
. Чтобы изменить его, перейдите по ссылке
Выполните следующую команду в терминале
sed -i -e 's/\r$//' scriptname.sh
Потом попробовать
./scriptname.sh
Он должен работать.
Если вы используете Sublime Text на Windows или Mac для редактирования своих скриптов:
Нажмите на View > Line Endings > Unix
и сохраните файл снова.
Это вызвано редактированием файла в windows и импортом и выполнением в unix.
Команда dos2unix -k -o filename
должна помочь.
В Notepad++ можно установить для файл, нажав
Редактирование --> Эол преобразования --> в Unix/OSX с формат
проблема с строки DOS заканчивая. Следующим будет преобразовать его для Unix
dos2unix file_name
Примечание: вам может потребоваться установить первый dos2unix с ням установить dos2unix
другой способ сделать это, используя команду sed для поиска и замены строки DOS символы в Unix-формате:
$sed -i -e 's/\r$//' your_script.sh
Ваш файл имеет конца строки Windows, которая путаешь Линукс.
Удалите паразитные символы CR. Вы можете сделать это с помощью следующей команды:
$ sed -i -e 's/\r$//' setup.sh
Для затмение пользователи, Вы можете попробовать изменить кодировку файла непосредственно в меню Файл > преобразовать линии разделители > в Unix (ЛФ \Н 0Α, ¶)
:
Или изменить новый текстовый файл строку разделитель "в": в Unixо
окно > предпочтения и gt; Общие > В рабочей области панели:
Я был в состоянии решить эту проблему путем открытия скрипта в теперь и сохранив его с линии правильной опции конец
:
и GT; Файл > Сохранить как...
В левом нижнем углу "Сохранить как" подскажите, есть выпадающее меню для кодировки и конца строки. Изменить окончания строк из окна
в Unix и Linux
а затем сохранить.
![теперь на "Сохранить как" приглашение]]1
Атом имеет встроенный конца строки пакета селектор
Более подробная информация здесь: https://github.com/atom/line-ending-selector