Alguém me disse isso:
BASH não é uma variável de ambiente, é uma variável de shell
Qual é a diferença?
bash
command-line
environment-variables
Tom Brito
fonte
fonte
Respostas:
$BASH
é uma variável local que é válida apenas no shell atual (bash).Variáveis de ambiente como
$SHELL
válidas em todo o sistema. Em um shell Bash atual,$BASH
aponta para o caminho de execução do bash , enquanto$SHELL
aponta para o shell definido como padrão (que pode ser do mesmo valor).Para obter uma explicação das variáveis de ambiente, consulte Variáveis de ambiente na Ajuda do Ubuntu.
fonte
Uma variável de ambiente é uma disponível globalmente em um programa e em programas filhos. Uma variável de shell está disponível apenas no shell atual. Para disponibilizar uma variável de shell como variável de ambiente, use
export VARNAME
(sem dólar$
).Exemplos para esclarecimento:
Outra maneira de definir uma variável de ambiente:
fonte
export
não define necessariamente uma variável de ambiente. stackoverflow.com/questions/7411455/…export
define uma variável de ambiente para processos filhos. A postagem que você vinculou não contradiz esta resposta. Você poderia esclarecer por que acha que está errada?export
absolutamente definir uma variável de ambienteHá uma diferença. Variáveis de Shell e Variáveis de Ambiente explicarão melhor do que eu posso, mas aqui está um trecho:
fonte
Variável do shell: curto prazo, aplicada apenas à instância atual do shell, não aplicável em todo o sistema
Variável ambiental: uso a longo prazo, sistema válido em todo o mundo, permitido globalmente
Por convenção, Shell Variable tem seu nome em minúsculas enquanto Envn. Variáveis são escritas como maiúsculas
fonte
Para responder a essa pergunta, primeiro tente entender o escopo de uma variável.
Quando você cria uma nova variável como a
SOME_ENV_VARIABLE="testing.txt"
que reside emSHELL scope
, isso significa que ela pode ser acessada pela instância do shell em que o usuário está logado. Quando a instância muda, por exemplo, você abre um novo terminal ou o shell (por exemplo, você mudar paracsh
) você não pode acessar essa variável.Quando você exporta essa variável como
export SOME_ENV_VARIABLE
essa variável agora está disponível no escopo do ambiente, isso significa que, se você alterar o shell, ainda poderá acessar essa variável. Vamos tentar entender com o seguinte exemplo:Analogia: suponha que você tenha um apartamento de dois quartos e o compartilhe com outro colega de quarto. A área comum pode ser acessada por qualquer pessoa, exceto seus quartos, a variável de ambiente é como a área comum e a variável shell é como o quarto. Se você quiser algo na área comum, ele pode ser acessado por qualquer pessoa, mas se você a mantiver no quarto, ela poderá ser acessado por você.
Lembre-se, se abrir um novo terminal, você não poderá acessar nenhuma das variáveis porque está alterando essa instância . Para isso, você deve adicionar suas variáveis em um
.profile
ou.bashrc
(se estiver usando o bash).fonte