2013-11-03 103 views
1

我有以下bash脚本:Linux环境变量设置消失

#!/bin/bash 
export PYCACHED_HOST='localhost' 
export PYCACHED_PORT=8001 
echo "PyCached environment variables set to: PYCACHED_HOST=`echo $PYCACHED_HOST`, PYCACHED_PORT=`echo $PYCACHED_PORT`" 

当我运行它,下面的输出打印:

PyCached environment variables set to: PYCACHED_HOST=localhost, PYCACHED_PORT=8001 

,当我运行相同的回声再次行:

echo "PyCached environment variables set to: PYCACHED_HOST=`echo $PYCACHED_HOST`, PYCACHED_PORT=`echo $PYCACHED_PORT`" 

我得到:

PyCached environment variables set to: PYCACHED_HOST=, PYCACHED_PORT= 

我知道env vars是为脚本上下文设置的,但是我能做些什么才能在脚本执行结束后使它们可用呢?

回答

4

what can I do to make them available after the script execution is over?

为运行脚本;

source ./script.sh 

OR

. ./script.sh 

这将运行在当前的shell脚本,而无需创建一个新的进程,因此ENV变量将在当前shell后可用脚本结束。

+0

这是解决方案,完美的作品! PS在'source'和额外的点语法之间是否有语义上的区别?它完全一样吗? – ducin

+2

是的,他们两个实际上是相同的。点是捷径语法。 – anubhava

1

如果您现在需要env变量,您可以将它们设置为.bashrc文件。它是一个隐藏文件,通常在主目录中找到。它在打开任何shell提示符之前执行。