Comment obtenir script chemin d'accès au fichier à l'intérieur du script lui-même, lorsqu'il est appelé par le biais de sym lien
Quand j'ai besoin pour obtenir le chemin d'accès au fichier de script à l'intérieur du script lui-même-je utiliser quelque chose comme ceci:
`dirname $0`
qui fonctionne fichier jusqu'à ce que j'appelle le script par le biais sym lien. Dans ce cas, le code ci-dessus imprime l'emplacement du lien à la place du fichier d'origine.
Est-il un moyen d'obtenir le chemin d'accès du script original du fichier, pas le lien?
Grâce,
Mike
Ok. J'ai trouvé la réponse ici: stackoverflow.com/questions/7665/...
OriginalL'auteur Ma99uS | 2009-05-28
Vous devez vous connecter pour publier un commentaire.
Curieux de savoir pourquoi avez-vous besoin pour exécuter différentes commandes lorsque
$0
est un lien symbolique ou pas? " unix.stackexchange.com/questions/432475/...Pourquoi ne pas simplement utiliser
$(dirname $(readlink -f $0))`` regardless of whether $0
contient le lien symbolique ou pas?OriginalL'auteur dsm
Vous vraiment besoin de lire la suite BashFAQ article:
La vérité est, la
$0
hacks ne sont PAS fiables, et ils échouent chaque fois que les applications sont lancées avec un zéro argument qui n'est pas l'application de chemin. Par exemple,login(1)
va mettre un-
en face de votre nom de l'application dans$0
, provoquant la rupture, et à chaque fois que vous lancez une application qui est dansPATH
$0
de ne pas contenir le chemin d'accès à votre application, mais simplement le nom de fichier, ce qui signifie que vous ne pouvez pas extraire les informations d'emplacement. Il y a BEAUCOUP plus de façons dont cela peut échouer.Bas de ligne: Ne comptez pas sur le hack, la vérité est que vous ne peut pas comprendre où votre script, donc l'utilisation d'une option de configuration pour définir le répertoire de vos fichiers de configuration ou tout ce que vous avez besoin de le chemin du script.
OriginalL'auteur lhunath
Utilisation
readlink
:OriginalL'auteur soulmerge
OriginalL'auteur Marius Dalacu
Je suggère celui-ci:
exemple:
travaille avec des liens symboliques de trop, car la fonction realpath utilise -P par défaut:
realpath est disponible avec coreutils >8.5, je suppose que
hth
Ce qui concerne
Stefan
OriginalL'auteur StefanKaerst