Подтвердить что ты не робот

Как установить script для работы в любом месте из командной строки?

Если у меня есть базовый Python script, с ним hashbang и что-то не на месте, так что из терминала в Linux я могу запустить

/path/to/file/MyScript [args]

без выполнения через интерпретатор или любые расширения файлов, и он выполнит программу.

Итак, я бы установил этот script, чтобы просто набрать

MyScript [args]

где-нибудь в системе, и он будет работать? Может ли это быть реализовано для всех пользователей в системе, или оно должно быть переделано для каждого из них? Я просто помещаю script в конкретный каталог или другие вещи необходимы?

4b9b3361

Ответ 1

Лучшее место для таких вещей - /usr/local/bin.

Это обычное место для установки пользовательских установленных двоичных файлов и должно быть на ранней стадии PATH.

Просто скопируйте script там (возможно, используя sudo), и он должен работать для любого пользователя.

Ответ 2

Просто создайте ~/bin и поместите export PATH=$PATH:$HOME/bin в свой bashrc/profile. Не путайтесь с системой, она вас укусит, поверьте мне.

Немногие вещи (относящиеся к вопросу, но не часть ответа):

  • Другой способ export PATH=$HOME/bin:$PATH НЕ безопасен, поскольку bash будет смотреть в вашу папку ~/bin для исполняемых файлов, и если их имя совпадает с другими исполняемыми файлами в исходном $PATH, вы будете удивлены неожиданными/нерабочее выполнение команды.
  • Не забывайте chmod+x при сохранении script в ~/bin.
  • Помните, что вы помещаете в свою папку ~/bin, если вы просто что-то проверяете или работаете над недоделанным script, всегда лучше использовать. /$SCRIPT_NAME из вашего CWD для выполнения script чем положить его под ~/bin.

Ответ 3

Прохождение создания python script в любом месте:

Сделать python script:

cd /home/el/bin
touch stuff.py
chmod +x stuff.py

Узнайте, где находится ваш питон:

which python
/usr/bin/python

Вставьте здесь этот код:

#!/usr/bin/python
print "hi"

Запустите в нем тот же каталог:

python stuff.py

Поднимите каталог, и он недоступен:

cd ..
stuff.py

-bash: stuff.py: command not found

Не найдено! Как и ожидалось, добавьте путь к файлу файла python в файл $PATH

vi ~/.bashrc

Добавить файл:

export PATH=$PATH:/home/el/bin

Сохраните его, повторно примените .bashrc и повторите попытку

source ~/.bashrc

Повторите попытку:

cd /home/el
stuff.py

Печать

hi

Фокус в том, что оболочка bash знает язык файла через shebang.

Ответ 4

Быстрый ответ на symlink ваш script в любой каталог, включенный в вашу систему $PATH.

Длинный ответ описан ниже с помощью прохода по примеру (это то, что я обычно делаю):

a) Создайте script, например. $HOME/Desktop/myscript.py:

#!/usr/bin/python
print("Hello Pythonista!")

b) Измените разрешение файла script, чтобы сделать его выполнимым:

$ chmod +x myscript.py

c) Добавьте настраиваемый каталог в $PATH (см. почему в примечаниях ниже), чтобы использовать его для пользовательских скриптов:

$ export PATH="$PATH:$HOME/bin"

d) Создайте символическую ссылку на script следующим образом:

$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello

Обратите внимание, что hello (может быть любым) является именем команды, которую вы будете использовать для вызова script.

Примечание:

i) Причина использования $HOME/bin вместо /usr/local/bin заключается в том, чтобы отделить локальные скрипты от других пользователей (если хотите) и других установленных файлов.

ii) Чтобы создать символическую ссылку, вы должны использовать полный правильный путь, т.е.

$HOME/bin ХОРОШЕЕ ~/bin НЕТ ХОРОШЕГО!

Вот полный пример:

 $ pwd
 ~/Desktop
 $ cat > myscript.py << EOF
 > #!/usr/bin/python
 > print("Hello Pythonista!")
 > EOF
 $ export PATH="$PATH:$HOME/bin"
 $ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
 $ chmod +x myscript.py
 $ hello
Hello Pythonista!

Ответ 5

Введите echo $PATH в оболочку. Это каталоги, которые вы искали при вводе command, поэтому поместите их в один из них.

Изменить: По-видимому, не используйте /usr/bin, используйте /usr/local/bin

Ответ 6

Помещение script где-то в PATH (например, /usr/local/bin) является хорошим решением, но это заставляет всех пользователей вашей системы использовать/видеть ваш script.

Добавление псевдонима в /etc/profile может быть способом сделать то, что вы хотите, чтобы пользователи вашей системы могли отменить это, используя команду unalias. Добавляемая строка будет:

alias MyScript=/path/to/file/MyScript

Ответ 7

Просто создайте символическую ссылку на свой script в /usr/local/bin/:

sudo ln -s /path/to/your/script.py /usr/local/bin/script

Ответ 8

В соответствии с FHS /usr/local/bin/ является хорошим местом для пользовательских скриптов. Я предпочитаю сделать их 755 root:root, после их копирования там.