UNIX导出命令

Jak*_*ake 154 unix bash shell

我试图了解export命令的使用.

我尝试过使用man export,但这个命令没有手册.

任何人都可以帮我理解export在UNIX中的使用吗?

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)

你可以看看这个

  • 欢迎来到StackOverflow.请注意,经典的Bourne shell需要:`VARIABLE = value; 导出VARIABLE`而不是一次分配和导出.C Shell中的`set`命令用于shell变量而不是环境变量; `setenv`是`export`的对应物.Bourne派生shell中的`set`命令打印所有变量,而不仅仅是导出(环境)变量.至少在历史上,`env`命令与shell(不是内置命令)是分开的,尽管它很容易被制作成内置命令.它为特定命令设置环境,而不是运行它的shell. (4认同)

Dav*_*ski 5

exportbashshell和其他Bourne shell 变体的内置命令。它用于标记要导出到子进程的 shell 变量。