2009-05-21 8 views
2

Ich arbeite an Mac OS X und ich habe ein Python-Skript, das von anderen Skripten und Programmen aufgerufen wird (insbesondere Apple launchd). Ich konnte es nennen mitWie definiert man einen systemweiten Alias ​​für ein Python-Skript?

python /Users/xyz/long/absolute/path/to/script.py arg1 arg2 

Da die Position des Skripts könnte sich ändern, ich will andere Skripte entkoppeln und die launchd-Konfigurationsdateien von der tatsächlichen Lage, so dass ein Anruf an das Skript wie

sieht
script arg1 arg2 

einen Alias ​​für Bash in $ HOME Definition/.bash_profile nicht funktioniert, da launchd nicht über den Alias ​​nicht kennt.

Was ist der beste Weg, um ein „Sytem weite Alias“ oder etwas Gleichwertiges zu definieren?

Antwort

6

ich in der Regel einen symbolischen Link machen und sie in/usr/bin (vorausgesetzt,/usr/bin ist Teil Ihrer PATH)

(in einem Terminal. Sie können sudo ln -s verwenden abhängig von den Berechtigungen.

ln -s /Users/xyz/long/absolute/path/to/script.py /usr/bin/script.py 

Wenn Sie Rory's advice und setzen Sie den # nehmen!/usr/bin/python am Anfang des Skripts werden müssen, können Sie auch das Skript ausführbar machen.

chmod a+x /Users/xyz/long/absolute/path/to/script.py 
+0

Gute Idee. Ich auch ausführbar setzen #/usr/bin/python in der ersten Zeile zu machen, aber ich habe noch ein /usr/bin/script erhalten:. Permission denied wenn ich rufe> Skript Was mache ich falsch? muss ich es manuell chmod? –

+1

Ja, Sie müssen eine chmod auf, es zu tun. ich redigierte mit einem Beispiel –

+0

Da es sich um eine „lokale“ Modifikation (nicht Teil des Kern OS), stelle ich den Symlink in '/ usr/local/bin' anstelle von'/usr/bin'. Ansonsten sollte es identisch funktionieren. –

3

Sie können nicht nur einen Symlink erstellen, sondern auch "#!/Path/to/Python“zu Beginn des Skripts und machen es executabe. Dann müssen Sie es nicht mit Call‚Python /Users/big/long/path/script.py‘

+3

+1: Setzen Sie immer '#!/usr/bin/env python' an die Front jedes sc rip. –

Verwandte Themen