GNU/Linux >> Tutoriels Linux >  >> Linux

Déterminer le chemin d'accès au script shell sourcé ?

Existe-t-il un moyen pour un source script shell pour trouver le chemin vers lui-même ? Je suis principalement concerné par bash, même si j'ai des collègues qui utilisent tcsh.

Je suppose que je n'ai peut-être pas beaucoup de chance ici, car le sourcing provoque l'exécution des commandes dans le shell actuel, donc $0 est toujours l'invocation du shell actuel, pas le script source. Ma meilleure idée actuellement est de faire source $script $script , de sorte que le premier paramètre positionnel contienne les informations nécessaires. Quelqu'un a un meilleur moyen ?

Pour être clair, je suis source le script, sans l'exécuter :

source foo.bash

Réponse acceptée :

Dans tcsh , $_ au début du script contiendra l'emplacement si le fichier a été sourcé et $0 le contient s'il a été exécuté.

#!/bin/tcsh
set sourced=($_)
if ("$sourced" != "") then
    echo "sourced $sourced[2]"
endif
if ("$0" != "tcsh") then
    echo "run $0"
endif

Dans Bash :

#!/bin/bash
[[ $0 != $BASH_SOURCE ]] && echo "Script is being sourced" || echo "Script is being run"

Linux
  1. Expiration du délai dans un script shell ?

  2. Shebangs indépendants du chemin?

  3. Processus dans une session dans un shell interactif Vs dans un script ?

  4. La signification de $ ? Dans un script shell ?

  5. Shell Script pour imprimer une pyramide d'étoiles

Comment utiliser des variables dans les scripts Shell

Comment créer des scripts shell

Comment exécuter une commande dans un script shell ?

Script de translittération pour le shell Linux

déterminer le shell dans le script pendant l'exécution

Exécuter un script shell en tant qu'utilisateur différent