【Linux】Dockerfile,ubuntu默认shell不是bash?RUN source命令报错!

本文探讨了在Docker环境中使用.sh文件时遇到的问题,主要是由于默认Shell为dash而非bash导致某些bash特有的语法无法正常运行。文章提供了修改默认Shell为bash的方法,并建议通过宿主机执行.sh文件。

Dash is not bash    

在一些 docker 官方 Image 中,执行一些 .sh 文件的时候遇到了一些奇怪现象,比如:

1 2 3
# Run something like: [[ $ABC =~ regexp ]] #> [[: not found

 

其实是因为此 Image 中 sh 并非 bash,而是 dash:

1 2
ls -l /bin/sh #> /bin/sh -> dash

 

此时,只需重置 sh 就好了:

1 2
rm /bin/sh ln -s /bin/bash /bin/sh

 

不过,在 docker image 里,还是不建议执行 .sh 文件。所有事情都在 host 上完成,之后 -v 共享目录给 docker container 为好。

 

参考资料:

http://stackoverflow.com/questions/20635472/using-the-run-instruction-in-a-dockerfile-with-source-does-not-work

http://zgu.me/blog/2014/08/24/dash-is-not-bash/

 

转载于:https://www.cnblogs.com/junneyang/p/5300976.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值