Spécification des variables de chemin d’access dans les scripts Bash

J’ai créé un script qui exécute une certaine fonction. Après avoir exécuté cette fonction, il appelle un autre script qui exécute une autre fonction. Cela fonctionne parfaitement. Cependant, j’ai appelé le deuxième script avec cette ligne de code:

( exec "/home/sh0/folder/folder2/folder3/secondScript" ) 

Que faire si je devais exécuter mon script sur une autre machine avec des chemins de fichiers totalement différents? Existe-t-il un moyen d’appeler un script sur une machine sans se soucier du chemin du fichier?

De plus, tous mes scripts sont situés dans le même répertoire que “folder3”

Merci d’avance!

En fin de compte, vous devez savoir où sont installés vos scripts et vous assurer que ce répertoire se trouve sur $PATH . Vous pouvez ensuite utiliser secondScript sans spécifier de chemin vers le script.

Toutefois, si les emplacements peuvent varier d’une machine à l’autre, vous devez décider de la manière de supprimer l’écart. Une option courante consiste à conserver le ou les script (s) dans un emplacement connu tel que $HOME/bin ou /usr/local/bin , où vous conservez cet emplacement connu sur votre chemin – ou dans /opt/program/bin (en utilisant un nom approprié pour le program basé sur ce que vous appelez le système de programmes que vous utilisez).

Une autre option consiste à avoir une variable d’environnement qui spécifie où les scripts sont trouvés ( PROGRAMLOCATION=/home/sh0/folder/folder2/folder3 et export PATH=$PATH:$PROGRAMLOCATION ). Vous devez ensuite vous assurer que les variables d’environnement ( PROGRAMLOCATION et PATH ) sont définies correctement, ce qui peut être difficile.

Si vous pensez que le nom du dossier est suffisamment unique, vous pouvez (mais probablement ne devriez pas) utiliser find pour localiser le répertoire. Que faites-vous lorsque vous trouvez 6 répertoires différents du même nom? De plus, une find sans contrainte est lente, surtout si vous avez des systèmes de fichiers montés sur NFS.

Vous pouvez simplement stocker le chemin comme indiqué ci-dessous

 #!/bin/bash MY_PATH="$PWD" FOLDER3="folder3" echo "$MY_PATH/$FOLDER3" 

Dites-nous si c’est ce que vous recherchez ou non.