Para descobrir qual arquivo define JAVA_HOME
, execute:
PS4='+ $BASH_SOURCE:$LINENO:' BASH_XTRACEFD=7 bash -xlic "" 7>trace.out
Isso gera a saída de depuração para um shell de login bash
e salva-o no arquivo trace.out
. Haverá muitas linhas nesse arquivo. As linhas parecem:
+ /etc/profile:7:PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
+ /etc/profile:9:export PATH
Isto mostra (a) o nome do arquivo atualmente sendo executado, (b) o número da linha e (c) a saída de depuração para aquela linha naquele arquivo. Basta pesquisar por JAVA_HOME
. Por exemplo:
grep JAVA_HOME trace.out
Como funciona
-
PS4='+ $BASH_SOURCE:$LINENO:'
Ao criar um rastreamento de execução,
bash
será prefixado em todas as linhas com uma expansão dePS4
. Aqui, fazemosPS4
exibir o arquivo de origem e o número da linha que está sendo lida. -
BASH_XTRACEFD=7
Isso envia o rastreio de execução para
7
, que é um descritor de arquivo escolhido na esperança de que os arquivos iniciadosbash
não sejam mexidos. -
bash -xlic ""
Isso inicia o bash com as opções
-x
, o que faz com que todos os comandos sejam exibidos com o promptPS4
,-l
, que instruibash
a tratar isso como um shell de login,-i
que faz o shell interativo e-c ""
, que faz com que a nova saída do shell seja concluída assim que a inicialização for concluída. -
7>trace.out
Isso redireciona a saída do rastreamento para o arquivo.