GNU/Linux >> Tutoriels Linux >  >> Linux

D'où est exécuté un script Shell ?

J'ai un script shell dans /usr/bin . Appelons-le hello .

Il contient ceci :

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

Exécution de hello depuis /home/Documents J'attends le résultat suivant :

 I am located in /usr/bin
 I am called from this directory: /home/Documents

Comment puis-je obtenir le chemin du répertoire à partir duquel le script est exécuté ?

Réponse acceptée :

Je ne peux pas commenter une autre réponse, donc je poste ici. Comme dit, dirname lit juste $0 et prend le nom du répertoire, donc si vous avez appelé quelque chose comme ../../directory/something.sh il ne résout pas ces points mais renvoie simplement ../../directory . Au lieu d'utiliser l'expansion de sous-shell avec cd et pwd , vous pouvez utiliser une commande très intelligente readlink qui résout en fait non seulement les répertoires en pointillés, mais également tous les liens symboliques. Je propose donc

  echo "I am located at $(readlink -e -- "$0")"

Vous pouvez utiliser un autre dirname autour de cela pour obtenir le répertoire au lieu du fichier.


Linux
  1. Comment exécutez-vous un script lors de la connexion dans * nix ?

  2. Comment exécuter un script shell lorsqu'un fichier ou un répertoire change ?

  3. Exécuter un script shell en parallèle

  4. Répertoire courant du script shell ?

  5. Exécuter un script canalisé à partir de stdin (Linux/Shell Scripting)

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment créer et exécuter un script shell dans Ubuntu 22.04

Changer le répertoire de travail dans le shell avec un script python

Exécutez un script shell à partir de la commande docker-compose, à l'intérieur du conteneur

Exécuter des scripts à partir d'un autre répertoire