2011-09-07 115 views
119

我想了解使用export命令。UNIX导出命令

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

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

+0

它非常奇怪,它没有一个手册页。我也没有看到。 – Pinocchio

回答

177

当您执行程序时,子程序会从父级继承其环境变量。例如,如果$HOME在父级中设置为/root,那么孩子的$HOME变量也设置为/root

这只适用于标记为导出的环境变量。如果在命令行上设置变量,如

$ FOO="bar" 

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

$ export FOO 

你可以(在老学校SH但没有)这两个语句合并成一个单一的一个在bash:

$ 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这样的独立可执行文件。

13

的Unix

的命令的env,设置和printenv显示所有的环境变量和它们的值。 env和set也用于设置环境变量,并且通常直接并入到shell中。通过将该变量名称作为命令的唯一参数,printenv也可用于打印单个变量。

在Unix中,还可以使用以下命令,但通常依赖于某个shell。

export VARIABLE=value # for Bourne, bash, and related shells 
setenv VARIABLE value # for csh and related shells 

你可以看看this

+3

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

1

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

export EDITOR=pico 

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