fbpx

Comandos Linux – Comando source

Comandos Linux – Comando source

comando de origem

Em sistemas operacionais do tipo Unix, source é um comando interno do shell Bash . Ele pega um nome de arquivo e executa os comandos nesse arquivo como se tivessem sido digitados na linha de comando .

Descrição

source lê e executa comandos do arquivo filename no shell atual. Se o nome do arquivo não contiver uma barra, os diretórios no PATH serão procurados pelo nome do arquivo .

Quando o bash não está em execução no modo POSIX (por exemplo, defina -o posix ), o diretório atual será pesquisado se o nome do arquivo não for encontrado em $ PATH .

Se algum argumento for fornecido, eles se tornarão os parâmetros posicionais quando o nome do arquivo for executado.

Usar fonte para executar os comandos em um arquivo não é o mesmo que executar um script . Por um lado, o arquivo não precisa ser executável (por exemplo, com chmod u + x ). Por outro lado, os comandos serão executados no ambiente atual do shell ; por exemplo, qualquer conjunto de variáveis manterá seu valor após a execução da origem.

Um uso comum da fonte é carregar e executar o conteúdo de um arquivo de configuração , como $ HOME / .bashrc . O arquivo .bashrc geralmente é executado automaticamente quando você cria um novo shell bash. Se você fizer alterações nesse arquivo e quiser aplicá-las à sua sessão atual do bash, poderá fazê-lo com a fonte . Veja os exemplos abaixo.

O comando interno (um único período ) executa a mesma ação que o comando de origem . Os dois podem ser usados ​​de forma intercambiável.

Sintaxe

 nome do arquivo de origem [ argumento ...]

Você também pode usar um único ponto (ponto), que é o mesmo que a fonte da palavra . Por exemplo:

.  nome do arquivo [ argumento ...]

Status de saída

O status de saída da origem é o status de saída do último comando executado ou zero se nenhum comando for executado. Se o nome do arquivo não for encontrado ou não puder ser lido, o status de retorno será diferente de zero.

Exemplos

fonte ~ / .bashrc

Leia o arquivo .bashrc no diretório inicial e execute qualquer comando nesse arquivo.

. ~ / .bashrc

O mesmo que o comando acima.

Os próximos exemplos ilustrarão como a fonte é executada no contexto atual do shell:

printf 'myvar = "Olá, mundo!" \ necho $ myvar \ n'> ./mysource

Use o comando printf builtin para imprimir texto, redirecionando -o para um novo arquivo chamado mysource . O comando printf é usado em vez de echo porque é uma maneira mais confiável de imprimir caracteres de escape , como \ n , que é interpretado como uma nova linha . A cadeia inteira é colocada entre aspas simples (  ), em vez de aspas duplas, para que o bash não expanda o ponto de exclamação como uma expansão do histórico .

Verifique o texto do mysource usando cat :

mysource gato
myvar = "Olá"
echo $ myvar

Esses comandos definirão a variável myvar e ecoarão o valor. Torne o mysource executável:

mysource chmod u + x

Em seguida, execute o script. A menos que o diretório atual esteja na sua variável de ambiente PATH , você precisará especificar o nome do caminho ./ (o diretório atual) como parte do comando:

./mysource
Olá Mundo!

O script mysource é executado em seu próprio ambiente shell, no qual a variável myvar possui um valor (” Olá, Mundo! “). Depois que o script termina, no entanto, myvar não tem mais um valor. Você pode verificar isso executando echo $ myvar no prompt do bash:

echo $ myvar

(Somente uma nova linha é impressa, porque myvar não tem valor.)

Agora, em vez de executar o script diretamente, execute-o com a fonte . O valor de myvar é ecoado, como antes:

source ./mysource
Olá Mundo!

Desta vez, no entanto, myvar ainda tem um valor no ambiente atual:

echo $ myvar
Olá Mundo!

Como você pode ver, a execução de um script cria um ambiente de shell isolado, que é destruído quando o script termina. Por outro lado, o uso da fonte permite que o conteúdo do script afete o ambiente atual. Estar ciente da diferença ajudará você a entender melhor o comportamento de seus scripts e como eles podem afetar o ambiente de outros scripts e programas executados no bash.

exec – Destrua o shell atual e substitua-o por um novo processo.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.