Até a data em que eu costumava definir minhas variáveis de ambiente no bash.bashrc
arquivo. Recentemente me disseram para usar o /etc/environment
arquivo. Bem, ambos funcionam bem.
Então, qual é a diferença entre eles?
Pesquisei isso no Google e descobri que "o bashrc é usado para usuários e ambientes específicos, em todo o sistema". O que se entende por sistema amplo aqui? /etc/bash.bashrc
também está aplicando alterações em todo o sistema, eu acho. Corrija-me se eu estiver enganado. Qualquer tipo de ajuda será apreciada ..
fonte
O
/etc/environment
arquivo define a variável do sistema para todo usuário na inicialização. Os comandos no/etc/bash.bashrc
are são executados se obash
shell for aberto por qualquer usuário. Portanto, as variáveis não seriam definidas a menos que umbash
shell seja aberto pelo menos uma vez.fonte
E como você está perguntando sobre o " sistema amplo ":
Os arquivos de configuração localizados no
/etc
diretório se aplicam a todos os usuários no sistema. Pois/etc/bash.bashrc
isso significaria para todos e para todos que estão usando o "Borne Again SHell", também conhecido como Bash, nessa máquina. Mesmo se você for o único humano a usá-lo, pode haver "usuários técnicos" afetados (basta dar uma olhada no/etc/passwd
e verificar com que frequência o termo "/ bin / bash" é indicado lá - ou usargrep bash /etc/passwd | wc -l
, o que deve fornecer a você esse número diretamente (ou seja: "pegue" todas as linhas que contêm a cadeia "bash" do arquivo "/ etc / passwd" e envie os resultados ("|") ao comando "wc" (contagem de palavras) para contar as linhas ("-eu").Portanto, para o seu usuário, é muito mais seguro modificar
~/.bashrc
(o arquivo ".bashrc" - com um ponto inicial, sim - no diretório inicial, por exemplo/home/ankur/.bashrc
), o que afeta apenas o usuário e deixa todo o resto em paz . Os arquivos/etc
devem ser alterados apenas se as alterações em todo o sistema forem realmente planejadas.Além disso: Ambas as configurações serão usadas se existirem. Primeiro, o arquivo de todo o sistema (aqui
/etc/bash.bashrc
:) é lido e "originado" (são as configurações aplicadas à sessão atual) e, em seguida, os usuários/home/username/.bashrc
são tratados da mesma forma, e, portanto, podem adicionar ou mesmo alterar / substituir configurações do global/etc/bash.bashrc
Arquivo.fonte
Além da discussão em todo o sistema e no escopo do usuário, uma diferença mais significativa
/etc/environment
é que não é um script que não seja~/.bashrc
.Você não pode desreferenciar a variável interna
/etc/environment
, sua atribuição de variável que leva o valor da linha literalmente (como já mencionado pelo roadmr).Seu Ubuntu o trancará se você estragar tudo por
$PATH
dentro/etc/environment
, tentando acrescentar um novo caminhoSe a sua página de login no Ubuntu Gnome ou Unity falhou ao deixá-lo entrar sem reclamar a senha errada. E você modificou recentemente
/etc/environment
, provavelmente é o caso.Uma correção é fazer login no console virtual CTRL+ ALT+ no F1console de login, verificar manualmente
$PATH
e corrigir o/etc/environment
arquivo.De acordo com isso ,
/etc/environment
é carregado pela pilha do PAM, que preenche a variável de ambiente linha por linha.fonte
A diferença entre os dois é que o
/etc/enivironment
arquivo funcionará para todos os usuários, enquanto o arquivo bash.bashrc funcionará particularmente somente para esse usuário. E se você fizer algo errado no/etc/environment
arquivo, as consequências podem ser graves, enquanto você pode desfazer facilmente as alterações no arquivo bash.bashrc, copiando o conteúdo do arquivo / etc / environment. Mas a primeira preferência é dar aobash.bashrc
arquivo e depois ao arquivo / etc / environment. Não é que, se você fizer alterações nobash.bashrc
arquivo, o terminal dê primeiro preferência ao arquivo do usuário local (ou seja,bash.bashrc
) e depois ao arquivo principal (ou seja/etc/environment
).fonte