Я должен найти, по крайней мере, файл где $JAVA_HOME
определяется (экспортируемый). Там какой-либо умный путь состоит в том, чтобы сделать это помимо текстового поиска в файлах?
Найти, который определяет файл JAVA_HOME
, выполненный:
PS4='+ $BASH_SOURCE:$LINENO:' BASH_XTRACEFD=7 bash -xlic "" 7>trace.out
Это генерирует вывод отладки для a bash
войдите в систему окружают, и сохраняет его в файл trace.out
. В том файле будет много строк. Строки похожи:
+ /etc/profile:7:PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
+ /etc/profile:9:export PATH
Это показывает (a) название файла, в настоящее время выполняемого, (b) номер строки и (c) вывод отладки для той строки в том файле. Просто переройте это для JAVA_HOME
. Например:
grep JAVA_HOME trace.out
PS4='+ $BASH_SOURCE:$LINENO:'
При создании трассировки выполнения, bash
будет предварительно ожидать каждую строку с расширением PS4
. Здесь, мы делаем PS4
отобразите исходный файл и номер строки, который читается.
BASH_XTRACEFD=7
Это отправляет трассировку выполнения в 7
который является дескриптором файла, выбранным в надеждах, что это - то что bash
файлы запуска не смешают с.
bash -xlic ""
Это запускает удар с опций -x
, который заставляет все команды быть отображенными с PS4
подсказка, -l
который сообщает bash
рассматривать это как оболочка входа в систему, -i
который делает оболочку интерактивной, и -c ""
который заставляет новую оболочку выйти, после того как инициализация завершена.
7>trace.out
Это перенаправляет вывод трассировки в файл.