2010-06-17 153 views
12

我有一些代理设置,我只是偶尔想打开,所以我不想把它们放在我的~/.bash_profile。我试着将它们直接放在~/bin/set_proxy_env.sh中,将~/bin添加到我的PATHchmod +x脚本中,但脚本运行时,变量不会粘在我的shell中。有谁知道如何让他们继续在shell会话的其余部分?如何从脚本设置bash环境变量?

回答

18

用途之一:

source <file> 

. <file> 
+0

,先生,是银行的钱 – tofutim 2016-12-04 00:21:06

14

在脚本中使用

export varname=value

,并与执行脚本:

source set_proxy_env.sh

export关键字可确保该变量被标记为自动包含在随后执行的命令的环境中。使用source来执行一个脚本,使用目前的shell启动它,而不是为脚本启动一个脚本。

+0

我有'export';这是我错过的'源头'。 – 2010-06-17 21:54:14

4

你试试这个:

. ~/bin/set_proxy_env.sh

自身运行它会打开一个独立的子shell(我认为),并设置变量有。但是,退出到您的shell后,绑定会丢失。前面的点告诉它在同一个shell中运行它。

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

+0

没有必要导出每个变量。只有你需要对子进程可见的那些。 – 2010-06-17 20:00:51

+0

啊是的,这就是我的意思:) – 2010-06-17 20:11:22