J'ai un script bash qui fonctionne avec des chemins relatifs. Il doit avoir un répertoire de travail égal au répertoire dans lequel le script est stocké. Cela fonctionne bien tant que je le démarre à partir de l'invite, car je peux d'abord accéder au répertoire du script. Cependant, lorsque je crée un lien symbolique vers le script dans /etc/cron.hourly, le script se brise.
J'ai besoin d'un moyen de faire en sorte que le script bash change de répertoire dans le répertoire dans lequel le script est stocké. Cependant, jusqu'à présent, je n'ai pas réussi. Existe-t-il un moyen simple de le faire, même si le script est appelé depuis cron via un lien symbolique ?
Réponse acceptée :
Vous devriez pouvoir le faire.
- Le paramètre $0 se développe au chemin complet (y compris le nom) du script tel qu'il a été appelé.
- La fonction shell intégrée test (ou [ ] ) peut tester si un chemin est un lien symbolique en utilisant -L
ls -l
, s'il est appliqué à un lien symbolique, donnera une seule ligne de sortie avec le vrai chemin comme champ final.
Cela vous suffit pour découvrir l'emplacement de la source. Bien sûr, cela pourrait être un lien symbolique, ce qui vous obligerait à le faire de manière récursive…