Eu só quero configurar uma variável de ambiente JAVA_HOME
para todo o sistema, para todos os usuários, incluindo o usuário root .
Requisitos:
- acessível a usuários normais
- acessível para fazer root
- sempre carregado, não apenas para o bash (o gnome-terminal não inicia um bash por padrão)
- para trabalhar no Ubuntu, Debian e opcionalmente Red Hat
- ótimo se a adição puder ser facilmente roteirizada
Respostas:
Como ninguém adicionou uma resposta completa aqui é o que eu considero atualmente o melhor, pelo menos para o ubuntu, mas estou aberto a adaptar a resposta para outras plataformas * nix.
Outras opções que já foram consideradas, mas descartadas:
/etc/environment
funciona, mas é mais difícil de manter, pois outras ferramentas ou pessoas podem editá-lo./etc/profile
- o mesmo que acimafonte
No Debian / Ubuntu isso seria / etc / environment
Não conheço o equivalente da Red Hat.
fonte
/etc/environment
. Consulte também serverfault.com/a/584072/26218Não entendo por que você descartou o / etc / profile. Essa é a localização correta.
fonte
Alguns responderam dizendo que
/etc/environment
é privado e / ou não é mais usado no Debian, e isso é (como na versão 7) falso.O arquivo é realmente lido pelo PAM - especificamente
pam_env(8)
, via padrão para oenvfile
sinalizador. A página de manual também indica esse padrão na seção FILES.Os wikis citados (especialmente o código de idioma) apenas afirmam que as variáveis de ambiente baseadas em código de idioma devem estar agora
/etc/profile
. Sua declaração "(em versões mais antigas do Debian, também / etc / environment)" é vaga e está no contexto de localidades.Um grep rápido nos
/etc/pam.d
programas:Essas linhas de configuração são aditivas e, como a primeira está faltando
envfile
, o padrão é/etc/environment
.Tudo isso, é claro, depende de qualquer binário que você esteja usando (
crond
, shells de login etc.) compilados no PAM.Finalmente, isso implica que outros sistemas que usam PAM (por exemplo, RedHat) se comportam da mesma forma, como pode ser visto em sua respectiva página de manual.
fonte
Uma observação: dê uma olhada no ambiente dos módulos . Eu uso isso toda vez que tenho que oferecer um ambiente UNIX complexo, com versão, auto-extensível e conciso para dezenas ou centenas de usuários. É usado principalmente em ambientes HPC multiusuários em larga escala. Apenas usá-lo para uma variável em particular certamente é um excesso de engenharia, mas ele faz um trabalho incrível quando você precisa de mais do que alguns pacotes de software e seu ambiente.
fonte
/etc/profile
Deveria trabalhar. Eu testei agora para ter certeza, coloqueexport SOMETEST=1234
a/etc/profile
e depois re-loggingecho $SOMETEST
me deu1234
como esperado. Também degnome-terminal
fonte
/etc/enviroment
não é usado no último lançamento estável do debian. A recomendação é criar seu próprio*.sh
arquivo/etc/profile.d/
para esse processo, como diz Sorin S. Consulte https://wiki.debian.org/EnvironmentVariablesfonte
Você não pode usar ~ arquivos específicos neste caso. então....
/etc/profile
seria o local apropriado para isso neste caso. Os usuários conectados no momento precisam ter uma nova sessão de login, mas isso não deve ser um grande problema.@ wk01:
/etc/profile
por padrão, não é carregado por um shell sem logon. você.bashrc
provavelmente está carregando ...fonte