Dans mon ~/.bashrc
file réside deux définitions :
commandA
, qui est un alias vers un chemin plus longcommandB
, qui est un alias vers un script Bash
Je veux traiter le même fichier avec ces deux commandes, j'ai donc écrit le script Bash suivant :
#!/bin/bash
for file in "[email protected]"
do
commandA $file
commandB $file
done
Même après m'être déconnecté de ma session et me reconnecter, Bash m'invite avec command not found
erreurs pour les deux commandes lorsque j'exécute ce script.
Qu'est-ce que je fais de mal ?
Réponse acceptée :
Tout d'abord, comme l'a dit ddeimeke, les alias par défaut ne sont pas développés dans les shells non interactifs.
Deuxièmement, .bashrc
n'est pas lu par les shells non interactifs sauf si vous définissez le BASH_ENV
variable d'environnement.
Mais le plus important :ne faites pas ça ! S'il te plaît? Un jour, vous déplacerez ce script quelque part où les alias nécessaires ne sont pas définis et il se cassera à nouveau.
Définissez et utilisez plutôt des variables comme raccourcis dans votre script :
#!/bin/bash
CMDA=/path/to/gizmo
CMDB=/path/to/huzzah.sh
for file in "[email protected]"
do
$CMDA "$file"
$CMDB "$file"
done