Eu tenho um arquivo de script que se refere a outro arquivo de script (contendo algumas funções) desta forma:
. "${scripts_dir}/update.sh"
O que isso significa em scripts Linux?
Ele carrega o código em update.sh para que possa ser invocado agora?
.
é um comando (!) que origina o script indicado. Sourcing significa executar o script, mas no contexto do shell em execução no momento. Se você "normalmente" executa um script a partir de outro script, uma instância de shell separada (chamada subshell ) é usada para executar o segundo script.Isso é usado normalmente se você deseja definir algumas variáveis de shell ou de ambiente, definir funções ou aliases, etc. no segundo script. No caso de execução "normal", eles não serão repassados ao primeiro script, mas com sourcing isso é possível.
Também ocorre uma diferença importante se o comando
exit
for usado no segundo script. No caso de execução "normal", isso encerra o segundo script (para ser mais preciso, sai do shell que executa o segundo script, o que obviamente faz com que o script seja encerrado), mas o primeiro script continua a ser executado a partir do próximo comando após a chamada para o segundo roteiro. No entanto, seexit
for usado em um segundo script de origem, ele encerrará ambos os scripts neste ponto (porque sai do shell que está executando o primeiro script).