Измените оболочку по умолчанию для выполнения .sh файлов

У меня есть новая установка Ubuntu 18.04. Я запускаю довольно много скриптов установки в .sh файлы. Я заметил это, если я просто работаю ./my_script.sh, они сообщат [[: not found если я явно не указываю bash ./my_script.sh. Поиск Google предполагает, что значение по умолчанию эквивалентно sh ./my_script.sh и именно поэтому это произошло.

Теперь у меня есть набор сценариев, записанных кем-то еще предполагающим, что я использую bash и названный довольно многими .sh файлы. Я могу войти в сценарии и явно добавить bash перед ними; но там был бы способ связаться .sh файлы с ударом по умолчанию?

Примечание: Я уже использую удар - я вижу результат echo $0 bash.

Shawn

0
задан 11 April 2020 в 05:51

2 ответа

Как самая первая строка Ваших сценариев добавляют в строке хижины для интерпретатора. Тем путем Вы не должны указывать оболочку, прежде чем Вы запустите скрипт.

Примеры:

Для bash включить

#!/bin/bash

Для sh включить

#!/bin/sh

и т.д.

С Linux расширения файла проигнорированы для сообщения ядра, какой файл это. Вместо этого лучше добавлять его как самую первую строку в сценарии для сообщения его, каково это. Поскольку тест здесь является тем же файлом, но с другим интерпретатором как первая строка.

~$ file a.txt
a.txt: ASCII text
~$ cat a.txt

11
22
33
44
55
11

Теперь я добавлю строку хижины, как обрисовано в общих чертах выше как самую первую строку в том файле и запущу тест снова:

~$ file a.txt
a.txt: Bourne-Again shell script, ASCII text executable
~$ cat a.txt
#!/bin/bash
11
22
33
44
55
11

Надеюсь, это поможет!

3
ответ дан 25 April 2020 в 10:51

Как объяснено в других ответах, файлы, которые Вы загрузили, не связаны с конкретным интерпретатором оболочки их .sh расширение, но их #!/bin/sh "хижина".

С первых лет Ubuntu использовала Almquist dash оболочка для обеспечения /bin/sh как обсуждено здесь:

Другие системы (особенно системы Linux прежней версии) могут принять это /bin/sh обеспечивают bash - который является, почему Вы видите ошибки, которые Вы. Хотя я не рекомендовал бы это, литеральный ответ на Ваш вопрос "там будет способом связаться, .sh файлы с ударом по умолчанию" подан вышеупомянутая связь, которую разорвала Моя производственная система, и я просто хочу вернуть его! т.е.

sudo dpkg-reconfigure dash

но отметьте связанное предупреждение:

Остерегайтесь этого, это - более агрессивное изменение, отменит преимущества скорости начальной загрузки, и существует даже ничтожный шанс, что существует несколько сценариев, которые теперь зависят от некоторой функции тире, которого не обеспечивает удар!

1
ответ дан 25 April 2020 в 10:51

Другие вопросы по тегам:

Похожие вопросы: