2011-06-09 19 views
14

我想知道在.bashrc中设置变量时是否需要使用“导出”。BASH:在.bashrc中设置变量时需要“导出”吗?

在我的测试编辑的.bashrc有

foo=bar 

export foo=bar 

之间没有什么区别。在这两种情况下,登录后 “回声$ foo的” 产出 “栏”。

我正在使用Debian Squeeze,如果这很重要。

谢谢你们提前。

回答

11

尝试创建一个访问foo变量的shell脚本。

如果fooexport'ed,它将在shell脚本中可见,否则它不会。

+0

我创建了一个包含“'echo $ foo'”的测试脚本。在登录后运行脚本的两种情况下,输出都是“bar”。我疯了吗?任何人都可以重现吗? – casper 2011-06-09 19:07:54

+0

你如何运行脚本? '。/ script'或'。 script'? – 2011-06-09 19:13:08

+0

我通过''。/ script''运行脚本 – casper 2011-06-09 19:27:00

10

超级用户has this covered

简短回答:export确保在子进程中设置环境变量。如果您不导出,则只能在相同的流程/交互式会话中使用。

+1

我创建了一个包含“echo $ foo”的测试脚本。在登录后运行脚本的两种情况下,输出都是“bar”。我疯了吗?任何人都可以重现吗? – casper 2011-06-09 18:28:23

5

这是可取的,因为导出的变量传递给子进程(从该shell启动的程序)。如果没有export命令,那些变量只适用于shell本身,而不适用于从shell启动的进程