在设置.bashrc文件中的变量时,是否需要使用"export"关键字?

17
我想知道在设置.bashrc文件中,是否需要使用"export"关键字来定义变量。
在我的测试中,编辑.bashrc文件时,并没有发现使用或不使用"export"关键字之间的任何区别。
foo=bar

并且

export foo=bar

在这两种情况下,登录后"echo $foo"会输出"bar"。
我正在使用Debian Squeeze,如果这有关系的话。
提前感谢大家。
3个回答

13

超级用户已经涵盖了这个问题

简单来说:export 确保环境变量在子进程中设置。如果您不导出它,则仅在同一进程/交互式会话中可用。


1
我创建了一个包含 "echo $foo" 的测试脚本。在两种情况下,登录后运行该脚本的输出都为 "bar"。我是疯了吗?有谁能重现这个问题吗? - casper

13
尝试创建一个访问foo变量的Shell脚本。
如果fooexport了,它将在Shell脚本中可见,否则就不可见。

我创建了一个包含 "echo $foo" 的测试脚本。在两种情况下,登录后运行脚本的输出都是 "bar"。我疯了吗?有人能重现这个问题吗? - casper
你如何运行脚本?是 ./script 还是 . script - Blagovest Buyukliev
我通过./script运行脚本 - casper
抱歉,各位。我不知道出了什么问题。但现在一切都按预期工作了。非常感谢你们所有的回复! - casper

5

使用export命令更好,因为导出的变量会传递到子进程(从该shell启动的程序)。如果没有export命令,这些变量只适用于shell本身,而不适用于从shell启动的进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接