web-dev-qa-db-fra.com

Lancer des scripts shell de n'importe où

Est-il possible d'exécuter mes scripts situés dans ~/scripts à partir de n'importe où?

Dites que je veux exécuter ./scriptname quel que soit mon répertoire de travail actuel.

8
mreq

Vous pouvez ajouter ~/scripts à votre variable d'environnement $PATH. Ensuite, vous pouvez exécuter scriptname de n’importe où (mais pas ./scriptname, car le ./ désigne le répertoire en cours).

Cette réponse montre comment ajouter ~/bin à $PATH, mais vous pouvez faire de même avec ~/scripts bien sûr.

15
elmicha

Ajouter

 export PATH=$PATH:~/scripts

à la fin de votre fichier ~/.bashrc. Cela vous permettra d'exécuter vos scripts dans ~/scripts/ en tapant simplement scriptname dans le bash. Vous devez vous déconnecter pour que cela fonctionne dans votre session (vous pouvez tester les scripts en ouvrant un nouveau terminal).

J'ajoute d'habitude

 export PATH=$PATH:~/bin

sur mon chemin, puis créez des liens symboliques vers les scripts et les programmes que je souhaite disposer dans ma session.

cd ~/bin
ln -s ~/Tools/Eclipse3.7/Eclipse 
# which will create a symlink in ~/bin/ with the name Eclipse
# pointing to ~/Tools/Eclipse3.7/Eclipse which allows me to execute
# the Eclipse in ~/Tools/Eclipse3.7/

Notez que les fichiers de chemin ont une priorité. Si j'ai déjà installé Eclipse via ubuntu, il effectuera d'abord une recherche dans Eclipse ailleurs que dans ~/bin/. Si vous voulez changer ce comportement, exportez simplement le répertoire en sens inverse:

export PATH=~/bin:$PATH

Assurez-vous que les scripts de votre répertoire de scripts sont exécutables, sinon l'exportation n'aura aucun effet.

Vous pouvez regarder les chemins disponibles en tapant

echo $PATH

Si vous souhaitez voir toutes les variables d’environnement, saisissez env dans votre console.

17
Pascal

Deux manières:

  • appelez vos scripts Shell avec un chemin complet au lieu de ./, par exemple ~/scripts/scriptname
  • ajoutez le dossier qui contient vos scripts Shell à la variable d'environnement $PATH et appelez vos scripts Shell sans le code précédent ./, comme scriptnamename__
2
Florian Diesch