不带等号的导出变量有什么作用?

leo*_*587 3 bash

我的 Linux 机器上有一个 bash 脚本,其中包含以下两行:

[ -r /etc/java/java.conf ] && . /etc/java/java.conf
export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

导出JAVA_HOME有什么作用?通常我认为 export VARIABLE_NAME=something 将变量设置为某个值。

运行export JAVA_HOME而不设置它会做什么?

我尝试在命令行上运行它,但没有任何反应。

l'L*_*L'l 6

两行代码(最好使用双括号):

[[ -r /etc/java/java.conf ]] && . /etc/java/java.conf
export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

...相当于:

-r检查是否/etc/java/java.conf存在并授予读取权限。

&&如果上述条件成立,则获取该文件。

export JAVA_HOME从源文件中获取先前分配的值,$JAVA_HOME使其可供子进程使用,而不仅仅是在 shell 内。