Я хотел выполнить сценарий оболочки:
-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
?
Это не проблема с разрешениями, вы не получаете сообщение о разрешениях
/bin/bash^M: bad interpreter: No such file or directory
Сценарий указывает, что он должен выполняться оболочкой, расположенной по адресу / bin / bash ^ M
. Такого файла нет: он называется / bin / bash
.
^ M
- это символ возврата каретки . Linux использует символ перевода строки для обозначения конца строки, тогда как Windows использует двухсимвольную последовательность CR LF. В вашем файле есть окончания строки Windows, что сбивает Linux с толку.
Удалите ложные символы CR. Вы можете сделать это с помощью следующей команды:
sed -i -e 's/\r$//' create_mgw_3shelf_6xIPNI1P.sh
Выполните vi <ваш сценарий>
.
затем : установить список
; он отобразит любой из специальных символов в вашем скрипте.
затем замените символ:
:% s / ^ M // gc
[для ввода ^ M
нажмите Ctrl + v + m ]
В vim вы также можете использовать : set ff = unix
и затем сохраните файл, или : установите ff = dos
, чтобы снова получить форматирование DOS.
Как объяснялось в других ответах, это проблема формата. Итак, ответ состоит в том, чтобы изменить формат окончания строк в стиле DOS на стиль Unix. Это еще один простой способ исправить ваш файл «на месте»
fromdos file
Он доступен в пакете tofrodos
:
sudo apt-get install tofrodos
Проблема заключается в том, что вы редактируете с помощью Dos!
откройте файл с помощью vi затем установите unix с помощью:
:set ff=unix
:wq
и все в порядке
Таны файлд DOS / Windows загварын мөрийн төгсгөлүүд (CR LF) байгаа боловч Unix-тэй төстэй системүүд дээр зөвхөн LF хяналтын тэмдэгтийг мөрийн завсарлага болгон ашигладаг.
The нэмэлт CR хяналтын тэмдэгт таны гаралтад ^ M
гэж кодлогдсон харагдаж байна. cat -A create_mgw_3shelf_6xIPNI1P.sh
ажиллуулж байхдаа үүнийг харж болно.
DOS / Windows стилийн мөрийн төгсгөлийг Unix хэв маягт хөрвүүлэхийн тулд dos2unix
гэсэн хэрэгсэл байдаг. Та үүнийг ашиглан дараах зүйлийг суулгана уу:
sudo apt-get install dos2unix
Дараа нь та файлын мөрийн төгсгөлийг
dos2unix FILENAME
unix2dos FILENAME
ашиглан хоёр аргаар хөрвүүлэх боломжтой болно. Таны тохиолдолд доорх командыг ажиллуулаад, скрипт файлыг газар дээр нь хөрвүүлэх болно:
dos2unix create_mgw_3shelf_6xIPNI1P.sh
Үүний дараа Bash файлыг зөв тайлбарлах чадвартай байх ёстой.
Вы также можете использовать gedit для удаления нежелательных символов. В меню «Файл» выберите «Сохранить как» и установите тип окончания строки unix / Linux.