* NIX - a exportação de uma variável dura apenas enquanto a máquina está ligada?

3

Eu sei que posso definir uma variável, 'exportar' as variáveis e colocar uma instrução de alias no meu arquivo .bash_rc.

Então:

Quando eu apenas configuro uma variável, ela dura apenas para aquela sessão e não é visível para outras sessões, correto?
Então, quando eu exportá-lo, é visível para outras sessões de shell (isso é apenas para outras 'novas' sessões embora?
As sessões existentes podem recarregar ou soemthing para obtê-lo?)
O mais crítico é que a exportação "fica" por meio de um reboot?
Ou é quando o arquivo .bashrc entra para a configuração 'realmente' permanente das variáveis daqui para frente?
Finalmente, quaisquer diferenças conhecidas entre o Ubuntu e o Mac?

    
por Michael Durrant 18.10.2011 / 21:50

4 respostas

3

Você está correto sobre .bashrc . Na inicialização inicial, o SO não conhece nada de variáveis de ambiente, exceto o que lê em .profilerc , .bashrc , .inputrc , etc. E qualquer coisa export ed só dura para a sessão atual, a menos que seja colocada em um desses arquivos .

Se valores forem adicionados a um desses arquivos e você quiser que eles entrem em vigor imediatamente, execute:

source .bashrc

ou:

. /etc/bashrc

etc ...

Editar (adicionando dos comentários do @ThomasAndrews):

No entanto, isso altera apenas as variáveis env para a sessão atual (janela de terminal) na qual você a executa. A chave para o entendimento é perceber que as variáveis de ambiente são herdadas dos processos pai para o processo filho no momento em que o processo filho é iniciado.

    
por 18.10.2011 / 21:52
1

Primeiro, você precisa determinar qual shell está usando. Faça isso:

$ echo $0
-bash

Agora, verifique as man pages do seu shell:

$ man bash
<man pages>

Desça até a parte inferior da man page que acabou de ser carregada e procure a seção FILES. Note que existem diferentes arquivos de inicialização para diferentes tipos de shells. Os arquivos e a localização dependerão do shell que você está usando.

    
por 18.10.2011 / 21:58
0

Você pode adicionar a declaração de exportação ao seu PERFIL ( link )

Algo como:

echo 'export PATH=/usr/local/my/bin:$PATH' >> ~/.profile
    
por 18.10.2011 / 21:52
0

No * nix, as variáveis de ambiente estão em uma base por processo. Processos filhos herdam seus valores de variável de ambiente de processo pai no momento em que o filho é iniciado.

Então, se você exportar uma variável de um shell, digamos, então essa variável de ambiente afeta apenas aquele processo de shell e qualquer processo iniciado a partir desse shell.

Isso é diferente das variáveis de ambiente no Windows, onde elas são essencialmente globais e permanentes quando definidas no painel de controle. (Editado por comentário abaixo.)

Normalmente, se você deseja definir uma variável de ambiente para cada processo que pode ser iniciado, coloque-o em seu script de login, como .bash_profile (se bash for seu shell.)

(O arquivo .bashrc é carregado com cada shell, o que você pode querer ou não querer - se você definir outro valor manualmente e, em seguida, executar "bash", deseja que o .bashrc substitua seu novo valor? .bash_profile é chamado com o login. Qualquer um pode ser o local correto para colocar uma variável de ambiente.

    
por 18.10.2011 / 21:56

Tags