Як виконати скрипт python з консолі без написання повного шляху?


8

У мене є кілька сценаріїв python у / usr / share / scriptpts /, якими я часто користуюся, і я хочу мати можливість їх виконувати, просто записавши ім'я, а не повний шлях, як я можу це зробити?

echo $ PATH показує мені:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

Тому я спробував написати на терміналі:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

Жодних помилок не відображається, і echo $ PATH тепер показує мій новий сценарій шляху, але коли я запускаю scriptName, я отримую команду не знайдено.

Що я роблю неправильно?


Як ви це робили прямо раніше?
Ігнасіо Васкес-Абрамс

Я цього не робив раніше.
grerdas

Ви їх не запускали? Я думав, ти сказав, що ти їх часто використовуєш ...
Ігнасіо Васкес-Абрамс

@Ignacio Vazquez-Abrams: О, я не зрозумів вашого запитання, вибачте, я керував ними, як "/usr/share/scripts/scriptName.py args"
grerdas

Відповіді:


9

Встановіть виконавчі дозволи для сценаріїв python за допомогою "chmod + x *"
Тепер у вас є два варіанти:

  • Додайте каталог каталогів до змінної PATH env, або
  • Створіть символічні посилання на свої сценарії по черзі (або напишіть інший сценарій, щоб зробити те саме) у /usr/local/binкаталозі.

Приклад:
[mzed@node02 test]$ vim printme.py

Зміст файлу:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

Я сподіваюся, що це вам допоможе.


Будь-яка можливість зробити версію для Windows? (Я знаю, що це питання Linux)
Юліан Онофрей

1

Гаразд, можливо, я просто старша школа ...
У / usr / bin додайте скрипти оболонки із заголовком #! / Bin / bash та розширенням no .sh. Тоді в цих сценаріях просто запустіть абсолютний шлях python.

Чому я вважаю, що це краще, ніж інші відповіді:
Не потрібно chmod-ing ваших сценаріїв, щоб зробити їх виконаними.
Не потрібно перейменувати сценарії.


Не забувайте про аргументи.
juanitogan

0

Вибачте за те, що ви запропонували основну річ. Ви спробували "scriptname.py", а не просто "ім'я сценарію"?

Крім того, всі сценарії повинні мати дозволи на виконання (ви можете зробити це, видавши "chmod + x script.py"). py args ", вони повинні мати дозволи на виконання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.