Shell Script – Source

Opa, hoje vamos ver um comando bem interessante e que eu adotei uma tarefa bem legal para ele, o comando source.

Não sei se a maioria que segue meu blog é familiarizado com Linux e scripts mas principalmente quem “desenvolve” usando a plataforma Linux, que seja para embarcados, linux, compilação-cruzada tenho certeza que já usaram o source se não usaram vai mudar de ideia depois deste post.

Imagine que você instalou um toolchain (todas as ferramentas necessárias para você compilar um código .c para um ARM Cortex-M3, por exemplo :), só que esta diferente do seu PATH e pior tem variáveis que possuem instruções e parâmetros que devem ser carregadas, ae só adicionar a linha dos bin no PATH não adianta. Ok, adiciono as variáveis no .bashrc fecho e abro novamente e boa, só que é ae que entra o source e resolve nossa vida.

Sintaxe do comando:

Agora vamos ao exemplo pratico1.sh:

Saída:

No nosso caso eu criei o script pratica1.sh e um arquivo com suposta configuração pratica1.conf, ele poderia ser somente-leitura a permissão e o source irá ler ele todo, e como tenho atribuições a nomes ele torna essas variáveis acessíveis no pratica1.sh após chamá-los, voltando no .bashrc, eu poderia adicionar qualquer coisa la e executar source ~/.bashrc que ele seria recarregado, posso fazer isso com qualquer arquivo até mesmo outro script, vamos ver o pratica2.sh:

Agora se eu mudar o nome do .conf:

Bom, se com um script eu chamando com source ele executa gera o mesmo efeito que ./pratica2.sh, certo? Sim, correto tanto que no nosso script rotinas_default.sh que é chamado eu crio um arquivo no diretório local e dou um cat em /proc/filesystems. E se executar como .  pratica2.sh irá aplicar o exit 0 por exemplo no terminal corrente finalizando o mesmo, porém para ler um arquivo como nosso pratica1.conf ae é com o source.

Eu particularmente uso muito o source aplicando a mesma ideia do post, crio varias variáveis chaves do script como PORTAS_UDP, PORTAS_TCP que são arrays em um arquivo .conf ou sem extensão mesmo que por fim é chamado no script principal e algumas estruturas de repetição trata essas informações.

Acho que fica bem organizado e legal para quem for mexer ou dar manutenção, gostaram do uso do source?

Como exercício, use o USERS_LIB que deixei no pratica1.conf para fazer algo baseado no usuário logado por exemplo ou o grupo :), boa sorte!

Até a próxima!

Referência

http://bash.cyberciti.biz/guide/Source_command

Share Button

CC BY-NC-SA 4.0 Shell Script – Source by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.