Благодаря @ilkkachu я нашел решение этой проблемы. Я разместил его здесь, и вы также можете найти его в комментариях.

Я хочу сбросить одну переменную среды, и я искал все эти места:

~/.bashrc
~/.profile
/etc/profile
/etc/environment
~/.bash_profile
/etc/bash.bashrc
/etc/profile.d/

Как видите, я сделал свою домашнюю работу, но не только не могу найти эту конкретную переменную среды, я также не могу найти большинство переменных среды, которые показывает команда env.

Кстати, я использую Debian 10.

PS: поскольку этот вопрос задавался много раз на разных форумах, я советую всем, у кого есть этот вопрос, использовать функцию, предоставленную @terdon в одном из ответов. К сожалению, это не решает мою проблему. Но это определенно работает в обычных ситуациях.

3
Masoud 28 Сен 2021 в 08:12
Попробуйте запустить bash -xl. Это запустит новую оболочку входа и распечатает все установленные переменные и функции.
 – 
Henri Menke
27 Сен 2021 в 18:49
Проблема в том, что я не могу найти файл, в котором установлены эти переменные
 – 
Masoud
27 Сен 2021 в 19:12
1
См.: Как определить, откуда взялась переменная среды? (Принятый ответ бесполезен, но трюк Стефана xtrace должен скажите точно что происходит)
 – 
ilkkachu
27 Сен 2021 в 21:13
1
Если вы указали имя конкретной переменной, которую хотите отключить, кто-то может понять.
 – 
A.B
27 Сен 2021 в 21:40
Я не знаю, как отблагодарить тебя. Я использовал эту команду bash для ее поиска. Его даже не было! Но затем я делаю примечание в конце этого ответа, в котором говорится, что это могло произойти во время запуска, и я ищу xsession и бум. Это было там!
 – 
Masoud
27 Сен 2021 в 21:57

2 ответа

У меня есть небольшая функция bash, которую я использую для таких вещей:

grep_bash () 
{ 
    grep --color -H "$@" ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2> /dev/null
}

Это будет охватывать большинство (все?) файлов, которые обычно используются в различных вариантах Linux, с которыми я знаком. Он включает в себя ~/.bash_aliases, который, насколько мне известно, относится к Ubuntu. Он также включает в себя некоторые стандартные файлы, которые вы не искали, в первую очередь файлы в разделе /etc/profile.d.

Если это не находит вашу переменную, то вы, скорее всего, получаете другой файл из одного из перечисленных выше. Вы можете выполнить grep для всех строк, которые являются исходными файлами, а затем также просмотреть их:

grep_bash -E '(\.|source) ' 

В нем будут перечислены все строки, в которых один из перечисленных выше файлов является источником другого, поэтому ваша переменная может быть определена в одном из исходных файлов. Конечно, любой из этих исходных файлов может, в свою очередь, являться источником других, поэтому вам может потребоваться углубиться, но это должно подойти в качестве отправной точки.

4
terdon 27 Сен 2021 в 18:58
Спасибо за вашу крутую функцию. К сожалению, он не смог найти ни одну из этих env vars. Затем я использовал расширенную версию. Он содержал только кучу файлов автозаполнения, которые я не считаю важными.
 – 
Masoud
27 Сен 2021 в 19:28

Благодаря @ilkkachu я нашел решение к этому.

В последней части ответа написано, что это могло произойти во время запуска (не так обычно), и когда я искал свою переменную этой командой из ответа: find /etc -type f -exec grep -F THE_VAR {} + я нашел ее.

1
polemon 28 Сен 2021 в 00:33