J'ai un utilitaire composé de quelques répertoires avec des scripts bash et des fichiers de support qui seront déployés sur plusieurs machines, éventuellement dans un répertoire différent sur chaque machine. Les scripts doivent pouvoir référencer des chemins relatifs par rapport à eux-mêmes, donc je dois pouvoir obtenir le chemin du fichier en cours d'exécution.
Je suis conscient du dirname $0
langage qui fonctionne parfaitement lorsque mon script est appelé directement. Malheureusement, il est souhaitable de pouvoir créer des liens symboliques vers ces scripts à partir d'un répertoire totalement différent tout en maintenant la logique de cheminement relatif.
Voici un exemple de la structure globale du driectory:
/
|-usr/local/lib
| |-foo
| | |-bin
| | | |-script.sh
| | |-res
| | | |-resource_file.txt
|-home/mike/bin
| |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh)
Comment puis - je référence fiable /usr/local/lib/foo/res/resource_file.txt
de script.sh
savoir si elle est invoquée par /usr/local/lib/foo/bin/script.sh
ou ~mike/bin/link_to_script
?