Environment-Variables
/etc/environment 中的轉義井號 (#)
我正在向其中添加一個 env 變數,
/etc/environment
但因為變數值包含 # 符號,所以字元串是條紋的。MYSQL_PWD="something#no"
現在,如果我執行
env
上述程式碼會產生MYSQL_PWD=something
. 我怎樣才能逃避雜湊?我已經嘗試過\
性格。
這似乎是不可能的
/etc/environment
。它意味著作為與 shell 無關的變數的公共位置。鑑於此,它看起來不支持其中帶有井號 (#
) 的字元串,並且似乎沒有辦法逃避它們。我發現這個 SF Q&A 的標題是:如何在 linux etc/environment 中正確地轉義前導“#”字元?. 這些方法都不起作用:
- 控制=“你好”
- test0="#你好"
- test1=“h#ello”
- test2=“h#hello”
- test3=“h//#ello”
- test4=“h/#ello”
- 測試5=h#it
- 測試6=h#it
- 測試7=h#it
- test8=h//#it
- test9=h/#it
- test10=‘h#it’
- test11=‘h#it’
- test12=‘h#it’
- test13=‘h//#it’
- test14=‘h/#it’
該問題的公認答案以及我的建議是什麼:
好吧,你想做
/etc/environment
的不是 shell 語法,它看起來很棘手,但它不是,這確實讓人們感到沮喪。背後的想法/etc/environment
很棒。一種獨立於 shell 的方式來設置變數!耶!但是實際的限制使它毫無用處。你不能在那里傳遞變數。嘗試例如放入
MAIL=$HOME/Maildir/
它,看看會發生什麼。最好只是停止嘗試將它用於任何目的,唉。因此,如果它是由 shell 處理的,您就不能用它來做您期望能夠做的事情。使用
/etc/profile
或/etc/bashrc
。還有另一個問答給出了為什麼會這樣的原因:
沒有辦法
/etc/environment
逃避 #(因為它被視為註釋),因為它正在由 PAM 模組“pam_env”解析,並將其視為 KEY=VAL 對的簡單列表並相應地設置環境。它不是 bash/shell,解析器沒有用於進行變數擴展或字元轉義的語言。參考