Bash maintient un certain nombre de variables, notamment BASH_SOURCE
qui est un tableau de chemins d'accès au fichier source.
${}
agit comme une sorte de citation pour les variables.
$()
agit comme une sorte de citation pour les commandes, mais elles sont exécutées dans leur propre contexte.
dirname
vous donne la partie chemin de l'argument fourni.
cd
change le répertoire courant.
pwd
donne le chemin actuel.
&&
est une logique and
mais il est utilisé dans ce cas pour son effet secondaire qui consiste à exécuter les commandes les unes après les autres.
En résumé, cette commande récupère le chemin d'accès au fichier source du script et le réduit à la portion chemin d'accès, cd
à ce chemin, puis utilise pwd
pour retourner le chemin (effectivement) complet du script. Ceci est assigné à DIR
. Après tout cela, le contexte est déroulé et vous vous retrouvez dans le répertoire de départ mais avec une variable d'environnement DIR
contenant le chemin du script.
0 votes
Avez-vous essayé, c'est-à-dire
echo "script=$0 dirForScript=$DIR"
? Vous devez montrer ce que vous avez essayé pour résoudre votre problème. Si vous mettez votreDIR=...
et monecho script=...
dans un script et appeler le script principal à partir de différents répertoires, vous devriez voir le même résultat. Si ce n'est pas le cas, alors c'est une Q intéressante et vous pouvez mettre à jour votre Q en indiquant pourquoi cela "ne fonctionne pas" . Bonne chance.0 votes
Donc, j'ai le code ci-dessous dans mon fichier script maintenant : #!/usr/bin/env bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "script=$0 dirForScript=$DIR et j'essaie de l'exécuter à partir d'un répertoire différent et il dit : -bash : Send-Transaction.sh : commande non trouvée
0 votes
Pour l'exécuter, j'utilise sh filename.sh. Est-ce que je fais quelque chose de mal ou est-ce que tout est faux ?
0 votes
Essayez
sh /full/path/to/filename.sh
. Cela devrait fonctionner. Ensuite, vous devez ajouter/full/path/to
à votre variable d'environnement PATH. Pour quelque chose d'aussi simple, cela peut être très déroutant au début. N'abandonnez pas, mais trouvez un bon tutoriel linux et lisez-le à propos du pourquoi et du comment de PATH. Bonne chance. (Je vais me coucher ;-) .0 votes
Mais si je connais déjà le chemin complet du nom de fichier, à quoi cela sert-il ?