'définir l'alias ' pour n'importe quelle commande et la commande alias fonctionnera correctement sur le shell interactif, alors que l'aliasing ne fonctionne pas dans le script.
# alias ls1='ls -lrt' # ls1 total 0 -rw-r--r-- 1 root root 0 Oct 12 12:14 file1 -rw-r--r-- 1 root root 0 Oct 12 12:14 file2
# cat script.sh #!/bin/bash # Script to check the alias output alias ls1='ls -lrt' ls1
# chmod +x script.sh # ./script.sh ./script.sh: line 3: ls1: command not found
Les alias ne sont pas développés lorsque le shell n'est pas interactif, à moins que les expand_aliases l'option shell est définie à l'aide de shopt . Il peut être testé en ajoutant la commande "alias" au script bash simple et l'exécution du script ne donnera pas la commande alias, alors que sur le shell interactif, il fournira la liste disponible des alias comme indiqué dans l'exemple ci-dessus.
Depuis la page de manuel de Bash :
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).
Faire fonctionner les alias dans le script bash
L'approche suivante peut être utilisée pour faire fonctionner la commande alias dans les scripts bash. Les variables peuvent être utilisées dans le script bash pour définir les options préférées pour n'importe quelle commande et ces variables peuvent être référencées dans la dernière section du script pour suffire au besoin d'alias à l'intérieur des scripts.
Ajoutez la commande 'shopt -s expand_aliases' au début du script pour développer les alias et faire fonctionner la commande alias dans le script bash.
# cat script.sh #!/bin/bash # Script to check the alias output shopt -s expand_aliases alias ls1='ls -lrt' ls1
# chmod +x script.sh # ./script.sh total 0 -rw-r--r-- 1 root root 0 Oct 12 12:14 file1 -rw-r--r-- 1 root root 0 Oct 12 12:14 file2