Узнайте, где последняя переменная среды была установлена в bash
Хорошо, я знаю, что есть отладчик bash. Но я ищу, если бы у меня была переменная среды в одном из моих сценариев запуска, и я не знаю, как она была установлена или где она может быть, есть ли способ найти ее, кроме исчерпывающего поиска скриптов?
Я имею в виду, есть ли механизм/инструмент, который обеспечивает такую вещь? Выполняет ли bash отслеживание местоположений переменных настроек?
Даже если это может показаться не очень важным, но это перешло мне на ум, когда я помогал другу установить OpenCL, и пакет, предположительно, автоматически установил переменную $ATISTREAMSDKROOT
. В любом случае пакет должен был добавить файл в /etc/profile.d
, чтобы разрешить установку переменной, но это не так. И, к счастью, переменная получилась пустой.
Но мне было интересно, не получилось ли это, и пакет добавил его в какой-то случайный файл, я бы, вероятно, не мог сказать, где он находится, кроме поиска.
Конечно, я знаю, что можно написать команду sed или два и выполнить поиск по сценариям, но я бы подумал, что исчерпывающий поиск: D
Ответы
Ответ 1
Один из вариантов - запустить экземпляр bash с помощью:
bash -x
... и найдите, где переменная установлена на этом выходе. Чтобы перенаправить этот вывод в файл, вы можете сделать:
bash -x -ls -c "exit" 2> shell-startup-output
Вы должны увидеть на выходе, где находятся каждый файл.