Answers:
这是Bash手册页的节选:
导出[-fn] [名称[=单词]] ...
导出-p
标记提供的名称以自动导出到随后执行的命令的环境。如果给出了-f选项,则名称指的是函数...
如果仅在当前环境中需要该变量,则无需使用export。
var=value
编辑:
不导出:仅当前环境。导出:当前环境和子环境。
这是导出对子级环境中变量可用性的影响的演示,并且子级环境中的更改不会影响父级:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
在第一个回显(echo "parent..."
)之后,您会看到“ 123”和“ 456”,因为var1
和var2
都在当前环境中处于活动状态。您尚未看到的值,var3
因为尚未设置。
在“ var3=...
” 开头的行之后,您看不到其值,var1
因为未导出该值。您确实看到了的值,var2
因为它已导出。您会看到一个值,var3
因为它仅针对子环境设置。
(bash -c
相当于运行带有-c
选项自变量内容的脚本。脚本或其他可执行文件,或者在这种情况下,to的参数bash -c
成为当前环境的子级,因此,结果当然是该子级的父)。
在“脚本”中更改变量的值。现在,它将输出这些新值。
一旦“脚本”完成,执行将返回到父环境(在这种情况下为命令行)。在最后一个回显之后,您会看到原始值,因为在子环境中所做的更改不会影响父环境。
export
-使变量可用于这些子环境。
你这样说
我一直在使用export命令设置环境变量
用您所说的话来说,听起来您确实在想问如何使环境变量持续存在。为此,您需要将export VAR="foo"
语句放入$ HOME / .bash_profile文件中(如果使用的是bash)。如果您希望该环境变量对除root用户以外的所有用户持久存在,则将其添加到/ etc / profile。如果您也想为root用户添加它,则在/root/.bash_profile中进行设置。
这对于所有选择bash的登录shell都适用。对于非登录外壳,您需要使用.bashrc。我没有其他壳提供的见解:D
导出是最简单的方法,那么为什么不保留它呢?
export VARIABLE=value # for Bourne, bash, and similar shells
setenv VARIABLE value # for csh and similar shells
FOO=BAR; executethisprogram
程序executethisprogram
将不知道变量的值FOO
。另一方面,在使用时:FOO=BAR; export FOO; executethisprogram
程序executethisprogram
将知道variable的值FOO
。
export FOO
是标记该变量的命令,FOO
以便发出该命令的环境的子进程可以访问该变量。该父对象可以是脚本或交互式外壳。
您还可以执行以下操作:
VAR=val application
例如:
LANG=C ls --help
用英文输出。
LANG=pl_PL ls --help
波兰语输出(如果有)。
在过去的sh中,您无法导出VAL = val。你不得不
VAL=val; export VAL
ls
例如)设置变量的值,而不会影响当前(父)环境中该变量的值。
ls
是其运行过程的子级。如果我ls
在命令提示符下键入,则交互式外壳程序是父级,ls
是子级。如果我有使用的脚本,ls
则该脚本是父级,并且ls
是子级。