我正在使用 MSYS 并且有一个带有变量、值键的文件 vars.txt,例如:
WINDIR C:/WINDOWS
STS_BUILD_DIRECTORY D:/STS/TMP
ALLUSERSPROFILE C:/Documents and Settings/All Users
我想读入并设置环境变量。我有一个 bash 脚本 setenv:
while read var value;
do
echo "performing export $var=$value"
export $var='$value'
done
我称之为
cat vars.txt | source setenv
但是在我的环境中变量没有设置。我也尝试过把它变成一个函数,但没有成功。这里有人知道我做错了什么吗?谢谢。
答案1
管道设置了一个子shell。当子shell退出时,变量就会丢失。
尝试这个:
source setenv < vars.txt
另外,您的单引号可能会阻止变量的扩展(我不知道在 MSYS 中是否如此)。尝试将行更改export
为以下内容:
export $var="$value"
如果变量不需要导出,则可以使用declare
而不是。export