Jak wykonać skrypt Pythona z konsoli bez zapisywania pełnej ścieżki?

8

Mam kilka skryptów Pythona na / usr / share / scripts /, których często używam, i chcę mieć możliwość ich wykonania po prostu wpisując nazwę, a nie pełną ścieżkę, jak mogę to zrobić?

echo $ PATH pokazuje mi:

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

Próbowałem więc pisać na terminalu:

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

Nie pokazano błędów, a echo $ PATH pokazuje teraz moją nową ścieżkę skryptów, ale kiedy uruchamiam skryptNazwa, nie otrzymuję polecenia.

Co ja robię źle?

grerdas
źródło
Jak to zrobiłeś wcześniej?
Ignacio Vazquez-Abrams
Nie robiłem tego wcześniej.
grerdas
Nie prowadziłeś ich? Myślałem, że mówiłeś, że często ich używasz ...
Ignacio Vazquez-Abrams,
@Ignacio Vazquez-Abrams: Och, nie rozumiem twojego pytania przepraszam, prowadziłem je jak „/usr/share/scripts/scriptName.py args”
grerdas

Odpowiedzi:

9

Ustaw uprawnienia do wykonywania skryptów pythonowych przez „chmod + x *”
Teraz masz dwie opcje:

  • Dodaj katalog skryptów do zmiennej env PATH lub
  • Twórz dowiązania symboliczne do swoich skryptów jeden po drugim (lub napisz inny skrypt, aby zrobić to samo) w /usr/local/binkatalogu.

Przykład:
[mzed@node02 test]$ vim printme.py

Zawartość pliku:

#!/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 ~]$

Mam nadzieję, że to Ci pomoże.

mj.scintilla
źródło
Czy jest jakaś możliwość stworzenia wersji dla systemu Windows? (Wiem, że to pytanie o Linuksa)
Iulian Onofrei
1

Okej, może jestem tylko starszą szkołą ...
W / usr / bin dodaj skrypty powłoki z nagłówkiem #! / Bin / bash i bez rozszerzenia .sh. Następnie w tych skryptach wystarczy uruchomić absolutepath python.

Dlaczego uważam, że jest lepszy niż inne odpowiedzi:
Nie wymaga przeskakiwania skryptów, aby były one wykonywalne.
Nie wymaga zmiany nazwy skryptów.

RobotHumans
źródło
Nie zapomnij o argumentach.
juanitogan
0

Przepraszamy za sugerowanie podstawowej rzeczy. Czy próbowałeś użyć „scriptname.py”, a nie tylko „scriptname”?

Ponadto wszystkie skrypty muszą mieć uprawnienia do wykonywania (możesz to zrobić, wydając „chmod + x script.py”). Sądząc z powyższego komentarza, ponieważ uruchomiłeś je jak „/ usr / share / scripts / scriptName. py args ”, powinni mieć uprawnienia do wykonywania.

Vinay
źródło