LINUX.ORG.RU

Запуск программ из /usr/bin

 , ,


0

1

Доброго всем дня, знатоки. Подскажите пожалста, в домашней папке имею каталог с программой (написаной на питоне с расширением ".py"). Мне нужно чтобы софтина запускалась простой командой из терминала, что то типа «usr@usr:~$progs.py -h -m» и учитывала все настройки указанные после нее (-h -m).

Пробовал в /usr/bin закинуть скрипт такого вида:

#! /bin/sh
/home/user/progs/progs.py

Но тогда прога запускается в терминале и не видит настройки после команды

Хотя просто команда в терминале все делает как надо, но запаривает такую вводить(

/home/user/progs/progs.py -h -m

прошу помощи

Вы можете добавить в .bashrc PATH до скрипта(как вариант)

export PATH=$PATH:~/path/to/script

Xwo
()

Для этого есть /usr/local/bin

anonymous
()

вместо скрипта можно просто символическую ссылку сделать:

ln -s /home/user/progs/progs.py /usr/local/bin/myscript

anonymous
()
Ответ на: комментарий от r0ck3r

Же!

#!/usr/bin/env python

import sys

def main(argv):
    print 'Argument List:', str(argv)

if __name__ == "__main__":
    main(sys.argv[1:])
beastie ★★★★★
()

А нельзя делать так:

1. в /etc/shells написать /usr/bin/python

2. а у питоновского скрипта 1-й строчкой #!/usr/bin/python и поставить файлу флаг на исполнение

И тогда будет запускаться просто как обычный исполняемый файл. С РНР такое легко прокатывает.

slamd64 ★★★★★
()
Ответ на: комментарий от slamd64

Можно.

ТС этот скрипт-обёртка вообще не нужен, надо просто положить свой скрипт в /usr/local/bin или в любой другой каталог в PATH.

Psych218 ★★★★★
()
Ответ на: комментарий от Psych218

И с каким наполнением скрип туда класть? в чем разница /usr/bin и /usr/local/bin.

Вообще как предложили в первом комментарии все заработало как надо

GomZaLeS
() автор топика
Ответ на: комментарий от former_anonymous

ну хз, первое что на ум пришло. Посмотрел откуда запускаются проги, посмотрел скрипт, создал по образцу, только вот до «$@» не доехал)))

как корректнее то?

GomZaLeS
() автор топика
Ответ на: комментарий от GomZaLeS

И с каким наполнением скрип туда класть?

Свой progs.py. Если критично, чтобы он остался в хомяке, то можно просто сделать на него симлинк (с любым именем). Например так:

sudo ln -s /home/user/progs/progs.py /usr/local/bin/foo

Это всё, теперь можно запускать как foo -h -m. Скрипт-прослойка на sh здесь лишняя сущность.

в чем разница /usr/bin и /usr/local/bin

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

Вообще как предложили в первом комментарии все заработало как надо

Оно конечно будет работать, только можно намного проще. Вообще без этого лишнего скрипта.

Psych218 ★★★★★
()
Последнее исправление: Psych218 (всего исправлений: 3)
Ответ на: комментарий от GomZaLeS

я другому пользователю отвечал, а вообще самое правильное решение по-мойму опубликовал Xwo с переменной PATH.

former_anonymous ★★★
()

man pip ключ install

anonymous
()
Ответ на: комментарий от GomZaLeS

Тогда вместо симлинка просто перемести свой progs.py в /usr/local/bin. Можешь его переименовать без .py, если хочется.

Psych218 ★★★★★
()
Ответ на: комментарий от slamd64

в /etc/shells написать /usr/bin/python

/etc/shells is a text file which contains the full pathnames of valid login shells

login shells
python

ok

anonymous
()
Ответ на: комментарий от former_anonymous

Хм. Может, от дистра зависит.

Бывает, что не позволяет в #!/... использовать, если оно не прописано как шелл в /etc/shells

slamd64 ★★★★★
()
Ответ на: комментарий от slamd64

Ты понимаешь разницу между интерпретатором и командной оболочкой?

kirk_johnson ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.