Запустите скрипт с помощью sh или bash

У меня есть файл .sh. Он включает синтаксис bash.

#!/bin/bash
function foo() {
    // do something
}

doo()
// do something

sh не ссылается на bash в моей системе.

Команда ниже не работает:

sh sample.sh

Выдает синтаксическую ошибку. Команда ниже работает нормально.

bash sample.sh

Я думаю, что «#!/bin/bash» бесполезен для моего случая. Я знаю, что ш != баш. Но нужно ли указывать sh/bash/etc, как в верхнем примере, для запуска файла .sh?


person zakjma    schedule 07.06.2019    source источник
comment
sh yourscript игнорирует строку shebang и заставляет sh. Не используйте его; просто запустите ./yourscript.   -  person Charles Duffy    schedule 07.06.2019
comment
Должен ли я использовать шебанг или использовать правильную оболочку для команды лайм? Да, и то, и другое — без вариантов.   -  person Dennis Williamson    schedule 08.06.2019


Ответы (1)


shebang (#!) используется, только если вы выполняете файл (т.е.: ./sample.sh). Конечно, файл должен иметь права на выполнение.

Если вы выполняете sh с вашим файлом в качестве аргумента, его содержимое интерпретируется sh (не принимая во внимание шебанг). То же самое для bash или любой другой команды, которая читает файл, представленный первым аргументом.

person Gonzalo Matheu    schedule 07.06.2019
comment
В разделе Как отвечать обратите внимание на раздел "Ответы на часто задаваемые вопросы", а в нем - на вопросы, которые были спрашивал и отвечал много раз раньше. - person Charles Duffy; 07.06.2019