Bonjour,
— je déterre pour un complément —
Poursuivant mon apprentissage,
je commence à faire usage des commandes :
afin d'écrire des scripts modulaires et ré-utilisables.
Comme dans le cas initial de
piratebab,
une condition nécessaire pour la "portabilité"
(usage indépendant des répertoires courant et d'installation du script)
est de récupérer dans une variable le chemin (absolu) du script principal pour qu'il puisse appeler les sous-scripts que je place (relativement) dans
./modules
Jusqu'à présent j'utilisais des chemins "directs"
(sans liens) et
Code : Tout sélectionner
SCRIPT_DIR=$(realpath $(dirname "$0"))
#
# et pour le chemin vers les sous-scripts
MOD_DIR=${SCRIPT_DIR}/modules
#
# que j'appelle avec
source ${MOD_DIR}/sub.sh
... fonctionnait très bien.
Sauf que si j'utilise un lien pour lancer le script principal,
je récupère maintenant le chemin du répertoire contenant le lien.
J'ai testé en remplaçant
realpath par
realpath -P ou
readlink
mais ça ne fonctionne pas mieux,
alors que si je passe ces commandes directement dans le terminal j'obtiens bien le vrai chemin.
Même :
Code : Tout sélectionner
$ realpath /home/data/docs/tests/bash/test/main_script.sh
/home/data/docs/tests/bash/main_script.sh
renvoie la bonne réponse.
--------------------------------------------------------
Du coup, j'ai testé la solution de
PengouinPdt avec :
SCRIPT_DIR=$(realpath $(dirname $(readlink -f -- "$0")))
ça fonctionne !
mais j'ai comme l'impression que ça pourrait être simplifié ???
Question annexe
À quoi sert
-- dans
readlink -f -- "$0"
car ça fonctionne aussi sans...
Merci pour vos lumières