Estaba leyendo un texto y dice:
El archivo de configuración del shell .bashrc en realidad se ejecuta cada vez que genera un shell BASH, como cuando ejecuta un script de shell. En otras palabras, cada vez que se crea un subshell, se ejecuta el archivo .bashrc. Esto tiene el efecto de exportar cualquier variable local o alias que haya definido en el archivo de inicialización del shell .bashrc.
También leí que cada vez que ejecuto un script de shell (digamosguión1.sh), se crea una subcapa. Entonces, cuando se crea esta subcapa,.bashrcEl archivo debe ejecutarse y, por lo tanto, los alias definidos en.bashrcdeben estar disponibles en el subshell (que no lo están). Y si los alias no están disponibles en este subshell, ¿cómo están disponibles en el shell principal (a través del cual ejecuto mi script)?
Respuesta1
Bien, en el shell bash de Linux puedes decir
source /path/to/my_lib.sh
para cargar sus definiciones de alias desde el archivo. O, para reducir la complejidad, simplemente puede copiar ese alias defs en su script bash.
¡Pero espera! Esto sólo creará los alias, probablemente con
alias foo3 foo9 # describe these two aliases: declare errors if one doesn't exist
Disfrutará de sus nuevas definiciones de alias, pero ejecutarlas fallará antes de habilitar la expansión de alias con:
shopt -s expand_aliases # alias xpn ON
Considere también:
shopt -u expand_aliases # alias xpn OFF
o
shopt expand_aliases # query whether
o
unalias foo3 foo9 # delete these aliases
Respuesta2
Si ha definido alias script1.sh
y desea que estén disponibles en todas partes, agregue a su .bashrc
archivo:
source /path/to/script1.sh
o alternativamente:
. /path/to/script1.sh
Para evitar un error en caso de que el script no exista, puedes usar:
if [ -f /path/to/script1.sh ]; then source /path/to/script1.sh; fi
Lo mismo funciona para cualquier función que defina en script1.sh
.