我至少需要找到一个$JAVA_HOME
定义(导出)的文件。除了在文件中搜索文本之外,还有什么聪明的方法可以做到这一点?
要查找哪个文件定义了JAVA_HOME
,请运行:
PS4='+ $BASH_SOURCE:$LINENO:' BASH_XTRACEFD=7 bash -xlic "" 7>trace.out
Run Code Online (Sandbox Code Playgroud)
这将为bash
登录 shell生成调试输出并将其保存到文件中trace.out
。该文件中会有很多行。线条看起来像:
+ /etc/profile:7:PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
+ /etc/profile:9:export PATH
Run Code Online (Sandbox Code Playgroud)
这显示 (a) 当前正在执行的文件的名称,(b) 行号,以及 (c) 该文件中该行的调试输出。只需在其中搜索JAVA_HOME
. 例如:
grep JAVA_HOME trace.out
Run Code Online (Sandbox Code Playgroud)
PS4='+ $BASH_SOURCE:$LINENO:'
创建执行跟踪时,bash
将在每一行前面加上PS4
. 在这里,我们让PS4
显示正在读取的源文件和行号。
BASH_XTRACEFD=7
这将发送执行跟踪,7
该跟踪是选择的文件描述符,希望它不会被bash
启动文件弄乱。
bash -xlic ""
这将使用 options 启动 bash -x
,这会导致所有命令与PS4
提示一起显示,提示将-l
其bash
视为登录 shell,-i
这使 shell 具有交互性,并-c ""
在初始化完成后使新 shell 退出。
7>trace.out
这会将跟踪输出重定向到文件。