script shell.
tablier
Membre
Y a t-il un moyen de récupérer le chemin du script exécutable que je lance dans le script lui-même?
Le reste du script fonctionne, sauf ça!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Après du coup c'est pas forcément juste le nom du script ou à l'inverse pas forcément le chemin complet, ça peut être un chemin relatif.
Donc du coup ta question se transforme en :
"Comment obtenir en bash un chemin absolu à partir d'un chemin relatif ?"
Après il y a des fonctions bash pour demander le chemin complet à partir d'un chemin relatif comme "realpath" mais c'est une commande externe qui se trouve ne pas être installée par défaut sous OSX.
Il y'a aussi "readlink -e" qui doit je crois marcher sous OSX lui par contre.
Ok, je vais faire quelques essais, merci.
Par exemple : Ici j'appelle l'exécutable ruby pour lui demander d'exécuter le script "puts File.realpath(ARGV[0])", en passant à ce script "$0", donc la commande ayant servi à lancer l'exécution du script bash. Je met tout ça entre backticks "`" pour demander à bash d'exécuter cette commande (ruby -e ... ...) et récupère le résultat dans la variable bash "full_path".
[EDIT] Une autre solution est de créer le script ruby suivant, puis de le sauver dans /usr/local/bin/realpath (après l'avoir rendu exécutable avec "chmod +x") : Il suffira alors de l'appeler dans ton script bash comme ceci :
Sur Mac la commande realpath n'existe pas. C'est dommage.
Une possibilité est donc de la créer, par exemple avec un petit bout de code du genre
Bon en Bash ce n'est pas direct (si on n'a pas de chance).
Ruby je n'ai jamais touché!
Mais en AppleScript, C'est les doigts dans le nez (euh, non c'est sale ça)
L'application exécute: set chemin to path to me
puis je peux lancer le script avec l'argument adéquat: do shell script ..... etc
NB, ça ne marche que dans l'application compilé, pas sous l'éditeur de script évidemment!
je viens de découvrir qu'Xcode a une documentation sur "script shell".
Cette documentation donne comme solution: lescript="$(which $0)"
Cette solution donne directement le chemin complet du script.