Qual é o escopo das variáveis de ambiente definidas em ~ / .bashrc? [duplicado]

0

Considerando que as variáveis de ambiente definidas em um shell estão disponíveis para os processos filhos do shell.
Quando abrimos um terminal, ele lê .bashrc e executa seus comandos. Isso significa que o .bashrc está disponível para todos os terminais.

Eu quero saber se as variáveis de ambiente do bashrc estão disponíveis para os scripts que são executados periodicamente em intervalos fixos? Ou seja, nós manualmente não abrimos um terminal para executar esses scripts.

E se eu começar o QtCreator clicando no ícone do desktop? As variáveis de ambiente de bashrc estarão disponíveis para este processo QtCreator? Por quê?

Se não, qual será a maneira de fornecer variáveis de ambiente para aqueles scripts que não abrem fisicamente um terminal?

Por favor, inclua referências ao responder.

    
por Aquarius_Girl 02.05.2017 / 06:50

1 resposta

2

Existem vários componentes pouco padronizados aqui.

Normalmente, seu ambiente de trabalho lê seu .profile para que seus processos filhos herdam quaisquer variáveis definidas lá.

Normalmente, seu ambiente de desktop não lê .bashrc (embora ex. o macOS execute cada novo Terminal como um shell de login, então se o Bash for seu shell de login, seus arquivos de login serão lidos nesse ponto).

Não está claro o que você quer dizer com "executar em um timer". Se você executar algo fora de cron ou at , ele não lerá nenhum arquivo de inicialização interativo (embora você possa fazer algo como bash -i scriptname se quiser forçá-lo).

No que diz respeito ao Bash e, portanto, .bashrc , a referência oficial é o Documentação de bash .

O local portátil para definir variáveis de todo o sistema é /etc/profile , embora algumas plataformas também suportem algo como /etc/environment . Da mesma forma, $HOME/.profile é o lugar para definir suas variáveis pessoais para todos os shells.

    
por 02.05.2017 / 07:55