Bash 导出不带等号的变量做什么?

Bash 导出不带等号的变量做什么?,bash,Bash,在我的linux机器上有一个bash脚本,其中包含以下两行代码: [ -r /etc/java/java.conf ] && . /etc/java/java.conf export JAVA_HOME 导出JAVA_HOME做什么?通常我认为export VARIABLE_NAME=something会将变量设置为某个值 运行export JAVA_HOME(导出JAVA_HOME,而不将其设置为某项功能)会做什么 我试着在命令行上运行它,但什么也没发生。两行代码(最好使用双

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

[ -r /etc/java/java.conf ] && . /etc/java/java.conf
export JAVA_HOME
导出JAVA_HOME做什么?通常我认为export VARIABLE_NAME=something会将变量设置为某个值

运行export JAVA_HOME(导出JAVA_HOME,而不将其设置为某项功能)会做什么

我试着在命令行上运行它,但什么也没发生。

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

…等同于:

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

&&
如果上述条件为真,则为该文件提供源代码

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


你试过阅读吗?公平地说,你链接的文档并没有真正解决OP提出的问题-@melpomene@JonnyHenly“标记要传递给环境中的子进程的每个名称。”-这就是
export
所做的…顺便说一句,re:
export VARIABLE\u NAME=something
——所有caps名称都是为影响shell或操作系统定义的工具工作方式的变量保留的;你不想把它们用在你自己的名字上。请参阅相关POSIX定义的第四段--grated,该文档仅显式适用于环境变量,并非所有shell变量都是环境变量,但它们共享一个名称空间,因此约定适用。[旁白:你知道吗,如果一个变量已经导出,那么所有的更改都直接进入环境,因此你不需要再次导出它?因此在许多上下文中,
export PATH=$PATH:foo
是愚蠢的,因为
PATH
已经是一个环境变量,所以
PATH=$PATH:foo
会做完全相同的事情。)它没有“从读取文件中获取它"在
export
命令中——这是之前在源代码时完成的,它分配了一个shell变量。这将导出shell变量,使其也成为一个环境变量。这些是非常不同的操作;合并它们的解释无助于理解。@CharlesDuffy:谢谢!NP——编辑后,我认为这是一个ve这是一个清晰而有用的答案!
[[ -r /etc/java/java.conf ]] && . /etc/java/java.conf
export JAVA_HOME