Почему я все еще могу выполнить файл bash без разрешения x? [дубликат]

Я создал bash-файл my_sh.sh. по умолчанию у него нет разрешения x:

-rw-rw-r-- 1 amin amin 37 Mar 12 00:45 my_sh.sh

Но я могу запустить его без каких-либо проблем или предупреждений! Почему?

amin@ubuntu:~/newDIR$ bash my_sh.sh
1
задан 12 March 2019 в 10:54

1 ответ

Существует различие в ./my_sh.sh и bash my_sh.sh

./my_sh.sh говорит ядру, что это - сценарий, который затем смотрит на первую строку (хижина #!) и использование сказало, что интерпретатор (?) для запущения скрипта это должно иметь исполняемые полномочия для ядра, чтобы сделать это.Править: Это запустит другой процесс, как мы запускаем новый экземпляр

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

Обратите внимание, что существует много других сценариев, которые мы можем записать точно так же, как .sh сценарии, Python, например:

python my_py.py отличается от ./my_py.py (<= принятие Вас имеют надлежащую хижину),

Как был указан в комментариях, при записи файлов сценария, игнорировании строки хижины, сценарий будет использовать текущую среду оболочки который, если сценарий будет использовать другую оболочку т.е. использование сценария ksh но Ваша среда оболочки bash (спасибо Sergiy Kolodyazhnyy для примера :)), это может привести к ошибкам.

2
ответ дан 7 December 2019 в 13:18

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

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