Bash 导出不带等号的变量做什么?
在我的linux机器上有一个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,而不将其设置为某项功能)会做什么 我试着在命令行上运行它,但什么也没发生。两行代码(最好使用双
[ -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中
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