qod*_*nja 6 bash environment-variables docker docker-compose
我有一个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"
Run Code Online (Sandbox Code Playgroud)
然后在Alpine 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行被视为注释并被忽略).
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |