如何从shell脚本创建和访问shell配置文件?
我正在研究一个shell脚本,当第一次打开时询问用户一些信息。此信息需要存储在配置文件*将来使用,以便用户在每次打开程序时都不必回答相同的问题。当然,我打算编写一个if语句来检查每次使用脚本时信息是否在配置文件中,但我不知道如何创建配置文件。我想知道如何从shell脚本本身执行此操作,以便如果某人下载我的脚本并使用它,则会为它们创建配置文件。我也想知道如何将信息从脚本添加到配置文件中。谢谢你的帮助。如何从shell脚本创建和访问shell配置文件?
一个解决方案,我经常看到的是写出来的一个配置文件是这样的:
cat <<EOF > ~/.app/config
var1=$var1
var2=$var2
EOF
然后,配置文件是正确的壳纸条本身,并且可以由外壳脚本在启动时来源,像这样:
[ -e ~/.app/config ] && source ~/.app/config
采购它(而不是执行它作为一个命令)可确保吨它定义的所有变量都将在源代码的脚本中可见。
然后,当然,您需要在采购它之后进行用户定制,但是在写出新版本之前。
买者自负
使用这个方法是好的东西快速正脏,或者说只有你会碰。但是,在当前会话中,采购脚本会运行其中的所有代码。这意味着它可以rm -rf /
,它也可以重新定义你在主脚本中定义的函数或变量,覆盖它们。
你可以使用像这样的代码:
RC_PATH="~/.myscriptrc"
echo $var1 > $RC_PATH
echo $var2 >> $RC_PATH
var1
和var2
将由换行符被分离并储存在~/.myscriptrc
配置文件。因此,鉴于var1=Foo
和var2=Bar
,则~/.myscriptrc
文件将是:
Foo
Bar
又一个OP认为SO是其个人发展中心。你甚至没有把工作看成与他的问题类似的其他问题,如:this或this等。
因为你可以遇到严重的麻烦,我会推荐你一个解决方案:
- 搜索谷歌对于bash配置文件的安全
,你会发现比从未source
任何配置变量,因为它很危险。例如当source
下一个配置文件时会发生什么?
MAINPATH=/some/path/here;rm -rf/&
所以,你应该
- 硬编码您的应用程序的默认代码,并
- 和阅读您的配置文件MUST保证比保存值时,没有按”不包含任何危险的东西(如上图),所以不要包含字符
;
或反勾或&
等。如果它只包含[A-Za-z0-9_ /]而不包含其他人,那么最好。这称为消毒配置值。
你可以做的最好的,使用更强大的工具进行配置文件分析,例如, perl,awk左右。
而接下来的时间,使用谷歌或SO对得到的答案搜索询问这里
诗前:和遗憾的消息,也许我心情不好的时候醒了,但开始生气与OP的谁甚至没有尝试自己找到解决方案...
我确实在寻找这些主题的帮助,并实际阅读了很多其他问题,但是,我没有找到任何解释得不够好或帮助不足的问题特别是我的问题。对不起,如果我因为想要更具体的答案而感到气愤,并感谢信息。 – Aslet 2013-05-05 05:04:01