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

问题描述 投票:2回答:1

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

在我的VM中,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

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

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

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

bash variables hadoop environment
1个回答
4
投票

运行以下命令:

PS4='+ $BASH_SOURCE:$LINENO:' BASH_XTRACEFD=7 bash -xlic "" 7>trace.out

完成后,运行:

grep HADOOP_CONF_DIR trace.out

每次设置HADOOP_CONF_DIR时,输出都会显示,设置它的文件以及该文件中的行号。

Example

让我们以我的.bashrc文件中的例子为例:

$ grep HISTFILESIZE trace.out
++ /home/john1024/.bashrc:193:export HISTFILESIZE=20000

这表明是~/.bashrc的第193行设置了HISTFILESIZE

How it works

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

Other method

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

grep HADOOP_CONF_DIR ~/.bashrc ~/.bash_profile ~/.profile /etc/profile.d/* /etc/profile /etc/bashrc
© www.soinside.com 2019 - 2024. All rights reserved.