Joh*_*ica 221
当您执行程序时,子程序从父级继承其环境变量.例如,如果在父级中$HOME设置为/root,则子级的$HOME变量也设置为/root.
这仅适用于标记为导出的环境变量.如果在命令行中设置变量,就像
$ FOO="bar"
Run Code Online (Sandbox Code Playgroud)
该变量在子进程中不可见.除非您导出它:
$ export FOO
Run Code Online (Sandbox Code Playgroud)
你可以在bash中将这两个语句组合成一个语句(但不是在老派中):
$ export FOO="bar"
Run Code Online (Sandbox Code Playgroud)
这是一个快速示例,显示导出和非导出变量之间的差异.要了解正在发生的事情,请sh -c创建一个继承父shell环境的子shell进程.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Run Code Online (Sandbox Code Playgroud)
注意:要获得有关shell内置命令的帮助,请使用help export.Shell内置命令是shell的一部分,而不是像shell这样的独立可执行文件/bin/ls.
小智 15
Unix的
命令env,set和printenv显示所有环境变量及其值.env和set也用于设置环境变量,通常直接包含在shell中.通过将该变量名称作为该命令的唯一参数,printenv也可用于打印单个变量.
在Unix中,也可以使用以下命令,但通常依赖于某个shell.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
Run Code Online (Sandbox Code Playgroud)
你可以看看这个在