Я хотел выполнить скрипт оболочки:
-rwxr-x--x 1 root root 17234 Jun 6 18:31 create_mgw_3shelf_6xIPNI1P.sh
Я пытался сделать стандартную процедуру, но я получил эту ошибку:
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
DEBUG cd/etc/opt/ldapfiles/ldif_in ;
./create_mgw_3shelf_6xIPNI1P.sh
localhost 389 -l /opt/fews/sessions/AMGWM19/log/2013-06-06-143637_CLA-0
**ERROR sh: ./create_mgw_3shelf_6xIPNI1P.sh: /bin/bash^M: bad interpreter: No such file or directory**
Что это значит? Я делал это как root
пользователь в root
группе.
Означает ли это, что файл не имеет правильного разрешения для root
пользователя?
источник
dos2unix
программу.\n
потому что это Unix. Сценарий может быть из более ранней версии Mac OS? Вы могли бы бежатьsed -i -e 's/\r$/\n/' script.sh
в этом случае.В vim вы также можете использовать
:set ff=unix
и затем сохранить файл, или:set ff=dos
снова получить форматирование DOS.источник
Ваш файл имеет окончания строки в стиле DOS / Windows (CR LF) , но в Unix-подобных системах в качестве разрыва строки используется только управляющий символ LF .
Дополнительный символ управления CR отображается в кодировке, как
^M
на вашем выходе. Вы также можете увидеть это, когда вы бежитеcat -A create_mgw_3shelf_6xIPNI1P.sh
.Чтобы преобразовать окончания строк из стиля DOS / Windows в стиль Unix, есть инструмент под названием
dos2unix
. Вы устанавливаете это используя:Затем вы можете просто конвертировать окончания строк в файлах обоими способами, используя
В вашем случае просто выполните следующую команду ниже, и файл сценария будет преобразован на месте:
После этого Bash должен правильно интерпретировать файл.
источник
Проблема в том, что вы редактируете с помощью Dos!
откройте ваш файл с помощью vi, затем установите unix с помощью:
и все нормально
источник
Есть
vi <your script>
.тогда
:set list
; он отобразит любой из специальных символов в вашем скрипте.затем замените символ:
:%s/^M//gc
[набрать^M
нажмите Ctrl+ v+ m]источник
Как объяснено в других ответах, это проблема формата. Итак, ответ - изменить формат с DOS на окончания строк в стиле Unix. Это еще один простой способ исправить ваш файл «на месте»
Это доступно в упаковке
tofrodos
:источник
Вы также можете использовать Gedit для удаления нежелательных символов. В меню File выберите Save As и установите тип конца строки unix / Linux.
источник