Как создавать пользовательские команды bash? (запуск файлов python, perl, ruby)

Как создавать пользовательские команды bash? (запуск файлов python, perl, ruby)

Я хотел бы использовать определенные инструменты, которые работают на Python/Perl/Ruby. Например, myProgram.pyхранится в ~/folder1/folder2/. Я хотел бы запустить его с вводом из bash, например >>> myProgram -h.

Пока что я прочитал о двух способах сделать что-то подобное:

  1. Создайте файлы в каталоге bin:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. Изменить ~/.bashrcдля постоянного псевдонима:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'

К сожалению, первый способ, похоже, не работает с файлами, отличными от bash (насколько я пробовал), а второй вариант просто возвращает ошибку типа myProgram: command not found.

Как мне создать команды bash для быстрого доступа к моим инструментам Python/Perl/Ruby с вводом команд?

решение1

Для запуска ваших скриптов вам понадобятся три вещи:

  1. Скрипт должен находиться в каталоге, указанном в вашей $PATHпеременной. Если вы поместите скрипты в ~/bin, чтобы выполнять их без указания полного пути к файлу в любое время при входе в систему, вам нужно расширить путь в вашем, .bashrcдобавив следующую строку export PATH=$PATH:~/bin. Чтобы увидеть, какие каталоги уже есть в вашем пути, вы можете просто вывести его на экран echo $PATH. Чтобы внести какие-либо изменения в .bashrcфайл, вам нужно перелогиниться (или перезапустить bash).
  2. Скрипт должен иметь установленный исполняемый бит разрешения. Для этого выполните командуchmod +x /path/to/script
  3. Скрипт должен сообщать, какой интерпретатор использовать для его запуска. Для этого используется специальная первая строка в скрипте, называемая shebang: #!/path/to/interpreter. Для Python это будет #!/usr/bin/python. Поскольку разные ОС могут иметь двоичные файлы в разных местах, рекомендуется использовать shebang в форме, #!/usr/bin/env pythonкоторая будет запускать интерпретатор Python по умолчанию, независимо от того, где он находится.

ОБНОВЛЕНИЕ: На основе комментариев я обновляю этот ответ с помощью символических ссылок. Если вы просто хотите сделать инструменты, которые вы уже установили, более доступными, вам не нужно создавать скрипты. Вам просто нужно найти исполняемый файл этого инструмента (или, если это скрипт, сделать его исполняемым, если он еще не исполняемый), а затем поместить символическую ссылку (см. man ln) на него в каталог в вашем $PATH (или добавить каталог с исполняемым файлом в ваш $PATH).

ПРИМЕЧАНИЕ: Простое создание исполняемого скрипта (см. п. 2) и добавление его aliasв ваш .bashrcскрипт тоже сработает, но добавлять новый псевдоним каждый раз при создании нового скрипта довольно неудобно.

Связанный контент