Bash é uma linguagem de script popular usada para automatizar tarefas e trabalhar com a interface da linha de comando. Uma das principais características do Bash é a capacidade de definir variáveis, que podem ser usadas para armazenar valores e passar entre diferentes comandos ou scripts. No entanto, ao definir variáveis em Bash, é preciso ser claro sobre a diferença entre definir uma variável com ou sem a palavra -chave de exportação.
Siga as diretrizes deste artigo para aprender a definir uma variável com ou sem exportação em Bash.
Definindo uma variável sem exportação em Bash
Definir uma variável sem exportação o torna uma variável local que é acessível apenas dentro da sessão ou script atual do shell, o que significa que a variável não pode ser acessada por processos ou scripts filhos que são chamados de dentro do script atual. As variáveis locais são úteis ao armazenar valores temporários que são necessários apenas em uma parte específica de um script, por exemplo, digamos que você tenha um script que define uma variável chamada chamada My_var sem exportação:
#!/BIN/BASH
My_var = "Olá, Linux!"
eco $ my_var
./Child_script.sh
Nesse caso, My_var é uma variável local e só é acessível no script atual. Quando o script é executado, ele imprime "Olá, Linux!” para o console, mas quando chama o script infantil (./Child_script.s), o script infantil não pode acessar o valor de My_var.
Na imagem acima, pode -se ver claramente que quando o script infantil é chamado, ele não consegue acessar o valor variável e retorna uma linha vazia no lugar da saída do arquivo de script.
Definindo uma variável com exportação em Bash
Por outro lado, definir uma variável com a palavra -chave de exportação o torna uma variável de ambiente. As variáveis de ambiente são acessíveis a todos os processos infantis que são gerados na sessão de shell atual ou script. Isso significa que a variável pode ser usada em diferentes scripts ou comandos que são chamados dentro do script atual, então vamos considerar o mesmo script, mas com My_var definido com exportação:
#!/BIN/BASH
exportar my_var = "Olá, Linux!"
eco $ my_var
./Child_script.sh
Nesse caso, My_var é uma variável de ambiente e é acessível a todos os processos infantis que são gerados na sessão ou script atual do shell. Quando o script é executado, ele imprime "Olá, Linux!” para o console e quando chama o script infantil ./Child_script.sh, o script infantil pode acessar o valor de My_var.
Na imagem acima, pode -se ver claramente que quando o script infantil é chamado, ele acessou o valor variável e retornou o valor que era “Olá, Linux”.
Observação: Aqui no código de exemplo, eu criei o script filho que chama a variável no script principal, então aqui está o código do shell para o script filho: Além disso, você deve fazer o arquivo de script executável usando o “Chmod +X” comando para que você possa executar o script.
#!/BIN/BASH
eco $ my_var
Conclusão
Ao trabalhar com variáveis em Bash, é importante entender o escopo da variável. Definir uma variável sem exportação o torna uma variável local que é acessível apenas dentro da sessão ou script da concha atual, ao definir uma variável com exportação, torna uma variável de ambiente acessível a todos os processos filhos que são gerados na sessão de shell atual ou script.