EDITOR
и VISUAL
переменные являются известными переменными, наиболее часто используемыми с этой целью (cron
, sudo
, bash
, и т.д. используйте его). Обычно, VISUAL
имеет приоритет более чем EDITOR
. Однако оба обычно используются в средах не-GUI. Ничто не препятствует тому, чтобы любой был программой GUI, но они обычно не.
можно обычно уважать настройки пользователя в настольной среде при помощи [1 113] xdg-open
. xdg-open
полагается на различную настольную среду определенные инструменты как [1 110] или kde-open
(, Как xdg-open
делает ее работу? ).
Так, в сценариях, просто сделайте:
xdg-open /some/file
xdg-open proto://some/uri
Это не проблема с разрешениями, вы не получаете сообщение о разрешениях
/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
В 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
. Вы устанавливаете его, используя:
sudo apt-get install dos2unix
Затем вы можете просто конвертировать окончания строк в файлах обоими способами, используя
dos2unix FILENAME
unix2dos FILENAME
. В вашем случае просто выполните следующую команду ниже, и файл сценария будет быть преобразованы на месте:
dos2unix create_mgw_3shelf_6xIPNI1P.sh
После этого Bash должен уметь правильно интерпретировать файл.
Как объяснено в других ответах, это проблема формата. Итак, ответ - изменить формат с DOS на окончания строк в стиле Unix. Это еще один простой способ исправить ваш файл «на месте»
fromdos file
Он доступен в пакете tofrodos
:
sudo apt-get install tofrodos
Проблема в том, что вы редактируете с помощью Dos!
открываете ваш файл с помощью vi, затем устанавливаете unix с помощью:
:set ff=unix
:wq
и все это прекрасно
Вы также можете использовать gedit для удаления нежелательных символов. В меню «Файл» выберите «Сохранить как» и укажите тип конца строки unix / Linux.
dos2unix
программа. – Keith Thompson 07.06.2013, 01:56