我的环境变量在哪里? (搜索了所有普通地方)

我的环境变量在哪里? (搜索了所有普通地方)

感谢@ilkkachu,我找到了解决方案。我已经将其发布在这里,您也可以在评论中找到它。

我想取消设置一个环境变量,并且我已经搜索了所有这些地方:

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

正如你所看到的,我已经完成了我的作业,但我不仅找不到这个特定的环境变量,而且我也找不到 env 命令显示的大多数环境变量。

顺便说一句,我正在使用 Debian 10。

PS:由于这个问题已经在不同的论坛上被问过很多次,我引导任何有这个问题的人在答案之一中使用@terdon提供的功能。不幸的是,这并不能解决我的问题。但在普通情况下它绝对有效。

答案1

我有一个用于此类事情的小 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) ' 

这将列出上面列出的文件之一正在采购另一个文件的所有行,因此您的变量可能在其中一个源文件中定义。当然,这些来源文件中的任何一个都可能依次来源其他文件,因此您可能需要更深入,但这应该作为一个起点。

答案2

感谢@ilkkachu 我找到了对此的解决方案

在答案的最后一部分,它说它可能在启动期间发生(不太常见),当我使用答案中的这个命令搜索我的变量时:find /etc -type f -exec grep -F THE_VAR {} +我找到了它。

相关内容