[英]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.