'establecer alias ‘ para cualquier comando y el comando de alias funcionará bien en el shell interactivo, mientras que el alias no funciona dentro del 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
Los alias no se expanden cuando el shell no es interactivo, a menos que expand_aliases la opción de shell se configura usando shopt . Se puede probar agregando el comando "alias" al script bash simple y la ejecución del script no dará el comando alias, mientras que en el shell interactivo proporcionará la lista disponible de alias como se muestra en el ejemplo anterior.
Desde la página man 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).
Hacer que los alias funcionen en bash script
Se puede usar el siguiente enfoque para hacer que el comando de alias funcione en scripts de bash. Las variables se pueden usar en la secuencia de comandos bash para establecer las opciones preferidas para cualquier comando y esas variables se pueden consultar en la sección posterior de la secuencia de comandos para satisfacer la necesidad de alias dentro de las secuencias de comandos.
Agregue el comando 'shopt -s expand_aliases' al comienzo de la secuencia de comandos para expandir los alias y hacer que el comando de alias funcione en la secuencia de comandos 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