Comment exécuter le script python à partir de la console sans écrire le chemin complet?

8

J'ai quelques scripts python sur / usr / share / scripts / que j'utilise souvent, et je veux pouvoir les exécuter en écrivant simplement le nom et non le chemin complet, comment pourrais-je faire cela?

echo $ PATH me montre:

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

J'ai donc essayé d'écrire sur le terminal:

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

Aucune erreur ne s'affiche et echo $ PATH affiche maintenant mon nouveau chemin de scripts, mais lorsque j'exécute scriptName, j'obtiens une commande introuvable.

Qu'est-ce que je fais mal?

grerdas
la source
Comment l'as-tu fait avant?
Ignacio Vazquez-Abrams
Je ne l'avais pas fait avant.
grerdas
Vous ne les avez pas exécutés? Je pensais que tu avais dit que tu les utilisais souvent ...
Ignacio Vazquez-Abrams
@Ignacio Vazquez-Abrams: Oh, je n'ai pas compris votre question désolé, je les ai exécutés comme "/usr/share/scripts/scriptName.py args"
grerdas

Réponses:

9

Définissez les autorisations exécutables pour les scripts python par "chmod + x *"
Vous avez maintenant deux options:

  • Ajoutez votre répertoire de scripts à la variable d'environnement PATH, ou
  • Créez des liens symboliques vers vos scripts un par un (ou écrivez un autre script pour faire de même) dans le /usr/local/binrépertoire.

Exemple:
[mzed@node02 test]$ vim printme.py

Contenu du dossier:

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

J'espère que cela t'aidera.

mj.scintilla
la source
Une possibilité de faire une version pour Windows? (Je sais que c'est une question Linux)
Iulian Onofrei
1

D'accord, je suis peut-être juste une école plus ancienne ...
Dans / usr / bin, ajoutez des scripts shell avec l'en-tête #! / Bin / bash et sans extension .sh. Ensuite, dans ces scripts, exécutez simplement python absolutepath.

Pourquoi je pense que c'est mieux que les autres réponses:
ne nécessite pas de modifier vos scripts pour les rendre exécutables.
Ne nécessite pas de renommer vos scripts.

RobotHumains
la source
N'oubliez pas les arguments.
juanitogan
0

Désolé de suggérer une chose de base .. Avez-vous essayé "scriptname.py", au lieu de simplement "scriptname"?

En outre, tous les scripts doivent avoir des autorisations d'exécution (vous pouvez le faire en émettant "chmod + x script.py"). À en juger par votre commentaire ci-dessus, car vous les avez exécutés comme "/ usr / share / scripts / scriptName. py args ", ils devraient avoir des autorisations d'exécution.

Vinay
la source