Atualizado desde o rebaixamento de votos, por favor, se isso corrige o problema, pois parece que quando eu usei uma máquina virtual e arco, por favor vote, então eu recebo o -1 removido, por favor.
Se o seu sistema usa o SUDO, veja a segunda metade abaixo ...
Para sistemas que usam SU somente:
Em alguns sistemas, ele pode ser colocado em alias, portanto, mesmo se você usar su, o auto usa su - o que força o uso das variáveis do novo usuário como encontrado em seu bashrc
Olhe seu usuário pessoal bash.rc para o alias mencionado abaixo e remova-o. Isso deve impedir que ele tente usar as variáveis de conjunto do usuário root.
página: link
Bit relevante:
Thus, administrators should generally use su as follows:
$ su -
An identical result is produced by adding the username root:
$ su - root
Likewise, the same can be done for any other user (e.g. for a user named archie):
# su - archie
You may wish to add an alias to ~/.bashrc for this:
alias su="su -"
Para sistemas SUDO
Isso é por causa da configuração do sudo. Eu usei a seguinte pergunta / resposta para me seguir: link
Basicamente:
A página de manual para sudoers
states:
env_reset If set, sudo will reset the environment to only contain
the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
variables. Any variables in the caller's environment
that match the env_keep and env_check lists are then
added. The default contents of the env_keep and
env_check lists are displayed when sudo is run by root
with the -V option. If the secure_path option is set,
its value will be used for the PATH environment
variable. This flag is on by default.
e é assim que isso é abordado:
Então, você pode fazer o seguinte para manter as variáveis ao usar o sudo
sudo visudo
isto irá abrir as configurações do sudo para você. Então, por que eu adicionei o seguinte abaixo
Defaults secure_path="blah"
Defaults env_keep +="VARIABLE VARIABLE VARIABLE"
(EXCLUINDO PATH como é definido por secure_path) e esses são apenas espaços únicos entre cada variável se você deseja ter mais de 1 mantido.
e o que isto faz é dizer ao sudo quais variáveis env devem manter e não desconsiderar.
Quando terminar, segure ctrl e aperte o para Write Out, digite e diga sim para salvar [mesmo que especifique um arquivo tmp OK, ele será escrito de volta na configuração principal apenas diga sim quando perguntado se você deseja sobrescrever ].
Isso deve permitir que você mantenha as variáveis que desejar (uma grande delas é JAVA_HOME e também http_proxy se você usar um proxy).
Por isso, deve ser algo como abaixo, incluindo sua variável especificada:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/bin"
Defaults env_keep +="GRAILS_HOME"
e para verificar se é necessário sair de todas as janelas de terminal abertas e reabrir uma e executar
echo $GRAILS_HOME
Deve ser o que você definir, agora emitir
sudo echo $GRAILS_HOME
e agora deve permanecer inalterado.
A referência Grails_home é de mim ajudando outro usuário em comunidades do Ubuntu assim apenas sub que com o nome da sua variável.