我想在etc/environment
AWS Linux AMI 2013.03 中存储系统范围的环境变量。在此示例中,我尝试存储短语“#hello”。请参阅以下示例。echo $control
生成
hello
我预期echo $test0
(以下)会产生:
#hello
但它却生成了一个空白行。以下是我输入的测试列表/etc/environment
:
control="hello"
test0="#hello"
test1="h\\#ello"
test2="h\#ello"
test3="h//#ello"
test4="h/#ello"
test5=h#ello
test6=h\\#ello
test7=h\#ello
test8=h//#ello
test9=h/#ello
test10='h#ello'
test11='h\\#ello'
test12='h\#ello'
test13='h//#ello'
test14='h/#ello'
如果我注销然后重新登录机器,它将正确解析 /etc/environment。控制条件传递了echo $control
。但是,没有一个测试用例正确响应。在每个实例中,哈希 (#) 之外的字符串要么被压缩,要么被忽略。例如,echo $test5
产生h
。有没有更好的方法来正确转义#
?
有趣的是,如果我执行,source /etc/environment
那么一切都会按预期进行,并且确实echo $control
会echo $test
产生预期的结果。但是,在注销/登录时,问题又出现了……
答案1
嗯,你想做的是棘手的事情 /etc/environment 不是 shell 语法,它看起来像一个,但实际上不是,这确实让人沮丧。/etc/environment 背后的想法很棒。一种独立于 shell 的设置变量的方法!太棒了!但实际限制使它毫无用处。
您无法在其中传递变量。例如,尝试将 MAIL=$HOME/Maildir/ 放入其中,看看会发生什么。唉,最好不要再尝试将其用于任何目的。因此,您无法用它执行您期望在 shell 处理它时能够执行的操作。
使用 /etc/profile 或 /etc/bashrc。