UNIX导出命令


158

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

我尝试使用man export,但是此命令没有手册。

任何人都可以帮助我了解exportUNIX中的用法吗?


没有手册页非常奇怪。我也没有看到。
Pinocchio

Answers:


226

执行程序时,子程序将从父程序继承其环境变量。例如,如果在父级中$HOME设置为/root,则子级$HOME变量也设置为/root

这仅适用于标记为导出的环境变量。如果您在命令行中像这样设置变量

$ FOO="bar"

该变量在子进程中将不可见。除非您将其导出:

$ export FOO

您可以在bash中将这两个语句合并为一个语句(但在老式的sh中则不能):

$ export FOO="bar"

这是一个简单的示例,显示了导出变量和未导出变量之间的区别。要了解正在发生的事情,请知道sh -c创建了一个子shell进程,该进程继承了父shell的环境。

$ FOO=bar
$ sh -c 'echo $FOO'

$ export FOO
$ sh -c 'echo $FOO'
bar

注意:要获取有关shell内置命令的帮助,请使用help export。Shell内置命令是Shell的一部分,而不是像这样的独立可执行文件/bin/ls


16

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

你可以看看这个


4
欢迎使用StackOverflow。请注意,经典的Bourne Shell将需要:VARIABLE=value; export VARIABLE而不是立即分配和导出。setC Shell中的命令用于shell变量而不是环境变量。setenv是的对应项exportsetBourne派生的shell中的命令将打印所有变量,而不仅仅是输出(环境)变量。至少env从历史上看,该命令与外壳程序(不是内置程序)是分开的,尽管可以轻松地将其制成内置程序。它为特定命令设置环境,而不是为运行该命令的外壳设置环境。
乔纳森·莱夫勒


0

export用于设置环境变量。例如:

export EDITOR=pico

将默认文本编辑器设置为pico命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.