如何找到 Linux 中环境变量的定义位置

mdi*_*ivk 3 variables bash environment hadoop

我刚开始学习hadoop(CentOS7),这里有一个关于环境变量的问题:

在我的虚拟机中,rxie 是登录用户:HADOOP_CONF_DIR = /opt/hadoop/hadoop-2.7.2/etc/rxie

没有 /opt/hadoop/hadoop-2.7.2/etc/rxie 的路径,它应该是 /opt/hadoop/hadoop-2.7.2/etc/hadoop

我试图找出变量的定义位置,以便我可以更正它。这是我的想法:

bash-4.2# grep -r HADOOP_CONF_DIR ~/.*
/root/./.bashrc:export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
Run Code Online (Sandbox Code Playgroud)

请注意 HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 是正确的。

我没有看到错误的 HADOOP_CONF_DIR 定义在哪里?

如果有人能启发我并提供修复方案,我将不胜感激,非常感谢。

Joh*_*024 7

运行以下命令:

PS4='+ $BASH_SOURCE:$LINENO:' BASH_XTRACEFD=7 bash -xlic "" 7>trace.out
Run Code Online (Sandbox Code Playgroud)

完成后,运行:

grep HADOOP_CONF_DIR trace.out
Run Code Online (Sandbox Code Playgroud)

输出将显示每次HADOOP_CONF_DIR设置、设置它的文件以及该文件中的行号。

例子

让我们以我的文件中的一些内容为例.bashrc

$ grep HISTFILESIZE trace.out
++ /home/john1024/.bashrc:193:export HISTFILESIZE=20000
Run Code Online (Sandbox Code Playgroud)

~/.bashrc这表明这是该集合的第 193 行HISTFILESIZE

怎么运行的

此命令启动一个bash登录 shell,并打开诊断。该PS4变量设置诊断输出的前缀,使其包含文件名和行号。有关更多详细信息,请参阅此处

其他方法

虽然不太可靠,但也可以尝试:

grep HADOOP_CONF_DIR ~/.bashrc ~/.bash_profile ~/.profile /etc/profile.d/* /etc/profile /etc/bashrc
Run Code Online (Sandbox Code Playgroud)