GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi le script Bash ne reconnaît-il pas les alias ?

Dans mon ~/.bashrc file réside deux définitions :

  1. commandA , qui est un alias vers un chemin plus long
  2. commandB , 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

Linux
  1. 10 alias Bash pratiques pour Linux

  2. Pourquoi ne "trouve"-t-il pas ce fichier ? ?

  3. Un script Bash peut-il être accroché à un fichier ?

  4. Pourquoi le ~/.bash_profile ne fonctionne-t-il pas ?

  5. Pourquoi "sudo Su" dans un script Shell n'exécute-t-il pas le reste du script en tant que racine ?

35 exemples de scripts bash

Pourquoi je ne peux pas échapper aux espaces sur un script bash ??

Comment connaître le nom du fichier de script dans un script Bash ?

Script bash :mauvais interpréteur

Pourquoi avez-vous besoin de mettre #!/bin/bash au début d'un fichier de script ?

Script bash pour supprimer le fichier le plus ancien d'un dossier