Eu estava lendo um texto e diz:
O arquivo de configuração do shell .bashrc é realmente executado sempre que você gera um shell BASH, como quando você executa um script de shell. Em outras palavras, cada vez que um subshell é criado, o arquivo .bashrc é executado. Isso tem o efeito de exportar quaisquer variáveis locais ou aliases que você definiu no arquivo de inicialização do shell .bashrc.
Eu também li que cada vez que executo um script de shell (digamosscript1.sh), um subshell é criado. Então, quando este subshell é criado,.bashrcarquivo deve ser executado e, portanto, alias definidos em.bashrcdevem estar disponíveis no subshell (que não estão). E se os alias não estiverem disponíveis neste subshell, como eles estarão disponíveis no shell principal (por meio do qual executo meu script)?
Responder1
Certo, no bash shell do Linux você pode dizer
source /path/to/my_lib.sh
para carregar seu alias defs do arquivo. Ou, para diminuir a complexidade, você pode simplesmente copiar esse alias defs em seu script bash.
Mas espere! Isso criará apenas os aliases, provavelmente com
alias foo3 foo9 # describe these two aliases: declare errors if one doesn't exist
você aproveitará seus novos defs de alias, mas executá-los falhará antes de ativar a expansão de alias com:
shopt -s expand_aliases # alias xpn ON
Considere também:
shopt -u expand_aliases # alias xpn OFF
ou
shopt expand_aliases # query whether
ou
unalias foo3 foo9 # delete these aliases
Responder2
Se você definiu aliases script1.sh
e deseja que eles estejam disponíveis em qualquer lugar, adicione ao seu .bashrc
arquivo:
source /path/to/script1.sh
ou alternativamente:
. /path/to/script1.sh
Para evitar um erro caso o script não exista, você pode usar:
if [ -f /path/to/script1.sh ]; then source /path/to/script1.sh; fi
O mesmo funciona para qualquer função que você definir no script1.sh
.