【发布时间】:2013-10-20 07:44:03
【问题描述】:
TL;DR:如何将一组键/值对从文本文件导出到 shell 环境中?
为了记录,下面是问题的原始版本,带有示例。
我正在用 bash 编写一个脚本,它解析某个文件夹中包含 3 个变量的文件,这是其中之一:
MINIENTREGA_FECHALIMITE="2011-03-31"
MINIENTREGA_FICHEROS="informe.txt programa.c"
MINIENTREGA_DESTINO="./destino/entrega-prac1"
此文件存储在./conf/prac1
我的脚本minientrega.sh 然后使用此代码解析文件:
cat ./conf/$1 | while read line; do
export $line
done
但是当我在命令行中执行minientrega.sh prac1 时,它并没有设置环境变量
我也尝试过使用source ./conf/$1,但同样的问题仍然存在
也许还有其他方法可以做到这一点,我只需要使用我传递的文件的环境变量作为脚本的参数。
【问题讨论】:
-
在 unix 上相同:unix.stackexchange.com/questions/31797/…
-
与 Ruby 相同:stackoverflow.com/questions/2139080/…,一个可以做到这一点的 gem:github.com/bkeepers/dotenv
-
这是一个很好的问题,但措辞过于具体,带有特定的变量名称(“MINIENTREGA_FECHALIMITE”?这是什么意思?)和数字(3)。一般问题很简单,“如何将一组键/值对从文本文件导出到 shell 环境中”。
-
另外,这个问题已经在unix.SE 上得到了回答,并且可以说是更多的话题。
-
一个可能对初学者有用的提示:确保在其中获取环境变量时“执行”脚本。这样一来,您就不会让它们进入并污染您自己的环境,否则有时甚至会变得不安全,例如,当您将机密存储在其中一个环境变量中时。
标签: bash variables environment-variables