Я на Кали Линукс 64 бит.
Я создал скрипт Python, который принимает 2 аргумента для запуска. Я не хочу каждый раз набирать одни и те же пути или искать в истории команд, которые я использовал в терминале. Поэтому я решил создать простой скрипт, который вызывает скрипт python со своими аргументами.
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
Это та же самая команда, которую я использовал бы в терминале. Тем не менее, я получаю сообщение об ошибке при попытке выполнить файл сценария.
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
wtf.sh имеет права на выполнение.
Что не так?
#!/bin/sh
(вместо#!/bin/bash
), если вы не знаете, что вы используетеbash
функции.sh
тогда, когда я знаю, что не использую функции bash).which bash
это полезно. Это возвращается/bin/bash
. Вверху моего Bash-скрипта я добавляю#!/bin/bash
. Затем, когда я хочу запустить скрипт Bash, я вхожуbash foo.sh
. Такwhich sh
используется так же.sh foo.sh
/bin/sh
это что-то отличное от Bash, и в скрипте есть незаметные Bashisms). Посмотреть здесь.Стоит отметить, что если точка монтирования, в которой находится ваш скрипт, имеет атрибут «noexec», то вы можете отбрасывать все, что хотите, и это все равно не будет работать, но вызов интерпретатора со сценарием в качестве аргумента будет продолжаться (до тех пор, пока который, в свою очередь, не пытается запустить другой скрипт на монтировании noexec).
источник