У меня есть bash-скрипт, который я хотел бы выполнить повсюду (как и другие основные команды Linux, например, ls). Я пытался следовать этому уроку, но он не работает, я всегда получаю command not found .

Также было бы неплохо, если бы был способ как напрямую выполнить скрипт Python таким образом, в настоящее время у меня есть файл .py со сценарием, а затем файл .sh, который вызывает python /path/to/it .

1 ответ1

2

Если вы пишете скрипт на Python, вы можете выполнить его по крайней мере следующими тремя способами:

1 Запустите python со сценарием в качестве аргумента.

Пример: /usr/local/bin/python-2.5 myscript.py

2 Запустите скрипт с помощью интерпретатора shebang.

Это означает, что самая первая строка начинается с #! (также называемый шебанг), за которым следует пробел (или чаще всего нет!) и полный путь к переводчику.

Пример:

#!/usr/local/bin/python-2.5
#
# My test script!
#
Do something

Обратите внимание, что я добавил комментарии после первой строки. Не добавляйте их над ним, так как первая строка больше не начинается с шебанга.

3 Запустите скрипт с #!/usr/bin/env python

Это более или менее аналогично варианту 2, за исключением того, что env найдет для вас python. Если python когда-либо перемещается в другое место или в новую версию, вам не нужно обновлять все свои скрипты.

Это предпочтительное решение


Вот вам и часть, где вы использовали скрипт sh для вызова python /path /to /it. Теперь вы знаете, как пропустить эту часть.

Вторая часть вашего вопроса кажется, что ваш сценарий не найден. Чтобы найти скрипт или программу, вам нужно либо указать полный путь к ней (например, /usr /local /bin /myscript.py`, либо он должен быть в вашем пути.

Вы можете проверить, какой ваш текущий путь установлен с помощью echo $PATH .

Вероятно, он включает в себя /usr /local /bin /, что означает, что будет найдена любая программа или скрипт, помещенный в каталог /usr /local /bin /. Если это не добавляет этот путь к общесистемной по умолчанию. (Примечание: запустите оболочку входа в систему, чтобы проверить это после изменения этого. Изменение файла конфигурации без запуска новой оболочки не будет отражать изменения).

Наконец, я пропустил ту часть, где вы хотите, чтобы скрипт был исполняемым. Вы уже имели это в учебнике, который связал вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .