2009-05-21 2 views
2

Je travaille sur Mac OS X et j'ai un script Python qui va être appelé par d'autres scripts et programmes (en particulier le launchd d'Apple). Je pourrais l'appeler avecComment définir un alias à l'échelle du système pour un script Python?

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

Depuis l'emplacement du script pourrait changer, je veux découpler autres scripts et les fichiers de configuration launchd de l'emplacement réel, de sorte qu'un appel au script ressemble

script arg1 arg2 

La définition d'un alias pour Bash dans $ HOME/.bash_profile ne fonctionne pas, car launchd ne connaît pas l'alias.

Quelle est la meilleure façon de définir un "alias sytem-wide" ou quelque chose d'équivalent?

Répondre

6

Je fais généralement un lien symbolique et le mettre dans/usr/bin (en supposant/usr/bin fait partie de votre PATH)

(dans un terminal. Vous devrez peut-être utiliser ln -s sudo en fonction des autorisations.

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

Si vous prenez Rory's advice et mettez le #!/usr/bin/python au début du script, vous aurez également besoin de rendre le script exécutable.

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

Bonne idée. aussi mettre #/usr/bin/python dans la première ligne pour le rendre exécutable Mais je reçois toujours un /usr/bin/script:. Permission refusée si je l'appelle> Script Qu'est-ce que je fais mal? Dois-je le chmod manuellement? –

+1

Oui, vous aurez besoin de faire un chmod dessus J'ai édité avec un exemple –

+0

Comme il s'agit d'une modification "locale" (ne faisant pas partie de l'OS de base), je place le lien symbolique '/ usr/local/bin' au lieu de'/usr/bin' Sinon, cela devrait marcher identiquement –

3

En plus de faire un lien symbolique, vous pouvez mettre "#!/path/to/python "au début du script et rends-le exécutable.Pas besoin de l'appeler avec" python /Users/big/long/path/script.py "

+3

+1: Mettez toujours '#!/usr/bin/env python' à l'avant de chaque sc ript. –

Questions connexes