[英]Why is bash using single and double quotes literally?
我有一個Bash的情況,我以前從未遇到過,也不知道如何解決。 我在Alpine Linux(Docker Container)上安裝了bash,出於某種原因,帶引號的環境變量按字面翻譯。
MY_PATH="/home/my/path"
> cd $MY_PATH
結果
bash: cd: "/home/my/path": No such file or directory
> echo $MY_PATH
結果
"/home/my/path"
現在如果你在沒有引號的情況下嘗試它就可以了
MY_PATH=/home/my/path
> cd $MY_PATH
結果
bash-4.4#
(路徑已更改)
> echo $MY_PATH
結果
/home/my/path
我之前從未見過這個,因為我希望bash能夠吞噬外部引號,甚至不確定在嘗試解決這個問題時要搜索什么。
為了完全符合這種情況,請允許我指出:
更新
這開始看起來像一個碼頭工人問題。 我正在使用Docker Compose中的env_file將環境變量推送到容器,它看起來像是字面上復制引號" => \\"
。
感謝@ bishop的評論嘗試od -x
container.env
#!/usr/bin/env bash
MY_PATH="/home/my/path"
然后高山3.8容器中運行的內部env
MY_PATH="/home/my/path"
更新2
https://docs.docker.com/compose/env-file/
這些語法規則適用於
.env
文件:
- Compose期望
env
文件中的每一行都是VAR=VAL
格式。- 以
#
開頭的行將作為注釋處理並被忽略。- 空行被忽略。
- 沒有特殊的引號處理。 這意味着它們是VAL的一部分 。
特別是,env文件不是shell腳本,bash看不到(你的#!/usr/bin/env bash
行被視為注釋而被忽略)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.