如何从脚本中设置bash环境变量?

22

我有一些代理设置,只有偶尔需要开启,所以不想把它们放在我的~/.bash_profile中。我尝试直接将它们放在~/bin/set_proxy_env.sh中,将~/bin添加到我的PATH中,并使用chmod +x对脚本进行了授权,虽然脚本运行了,但变量并没有保留在我的shell中。有谁知道如何让它们在整个shell会话中保持可用?

3个回答

27

使用以下之一:

source <file>

. <file>

2
那位先生,这就是银行里的钱。 - tofutim

23
在脚本中使用: export varname=value 并使用以下命令执行脚本: source set_proxy_env.shexport关键字确保变量被标记为后续执行的命令环境中自动包含的内容。使用source来执行脚本,它会在当前的shell环境下启动脚本,而不是为脚本启动一个临时的shell环境。

我有“导出”;我缺少的是“源”。 - James A. Rosen

8

你试过这个了吗:

. ~/bin/set_proxy_env.sh

单独运行它会打开一个新的子shell(我想是这样),并在其中设置变量。但是,退出返回到你的shell后,绑定就会丢失。前面的点号告诉它在同一个shell内运行。

另外,不要忘记像这样export需要的变量:export MYVAR=value


不需要导出每个变量,只需将需要在子进程中可见的变量导出即可。 - Dennis Williamson
啊,是的,那就是我想表达的意思 :) - Vivin Paliath

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