一个 echo -e 引发的问题
背景
因#%@&&¥@的原因,服务主机要移到 arm 下,需要重新构建镜像来验证功能,原来在 amd 下四肢健全的 Dockerfile
居然瘸了 😒
排查
Dockerfile
里有一步需要添加公钥,用到了echo -e
命令,哎~问题来了,它居然把 -e
输出出来了
再发现 bash
可以 sh
不可以

原因
这个说来话长,咱们长话短说
shell 有很多种,不同的 shell 支持的语法不同,dash 比 bash 更小更快,所以 Ubuntu 6.10 开始默认的 sh 都是 Dash Shell,dash 不支持 echo -e
, over ~

详见 👉🏻 linux 中的 sh、dash、bash 的区别
解决
在 Dockerfile
里加上 shell 切换
# 切换bash
RUN ln -sfn /bin/bash /bin/sh
PREV
proto3 样式规范
NEXT