J'ai besoin d'exécuter un script qui accède à un fichier dans le même chemin d'accès qu'il se trouve.
Par exemple: j'ai le script dedans /home/me/folder/script.sh
, et ce script accédera au fichier /home/me/folder/myfile
. Comme le fichier se trouve dans le même chemin que le script, j'utilise simplement le nom myfile
, pas le chemin complet.
Mais si je l'exécute /tmp/
, comme:
/tmp$ /home/me/folder/script.sh
ça me donne:
myfile: No such file or directory
Alors, comment puis-je dire dans le script que le fichier se trouve dans le même chemin que le script lui-même?
shell
scripting
shell-script
path
Tom Brito
la source
la source
Réponses:
Et alors
$(dirname "$0")/myfile
?la source
Vous ne pouvez pas savoir dans toutes les circonstances, mais souvent (pas toujours) lorsque vous exécutez un script par chemin d'accès au lieu de laisser la recherche de shell
$PATH
, le chemin d'accès au script sera$0
. Vous pouvez ensuite utiliserdirname "$0"
ou${0%/*}
pour obtenir le chemin.la source
Je ferais normalement quelque chose comme ça à la tête de mon script:
Ou, pour obtenir le chemin d'accès complet dans le répertoire du script (au lieu d'un chemin d'accès relatif):
Référez-vous ensuite là
${SCRIPTDIR}
où vous en avez besoin.la source