【笔记】script.sh: source: not found in docker 问题

tmp/durable-d67c81b9/script.sh: source: not found in docker

在jenkins中使用pipeline搭建工程,将脚本中docker run命令替换成 withDockerContainer格式
源命令为:

docker run -it --name xxx -v xxxxx imagename /bin/bash -c source build/envsetup.sh && lunch XXXXX && make XXX j`nproc`"

替换后为:

withDockerContainer(args: "-u XXXXX", 
                            image: 'XXXXX:v0.1')	 {
                            sh "echo `pwd`"
                            sh "cd $DEST_DIR && source build/envsetup.sh && lunch XXXXX && make XXX j`nproc`"
                        }

jenkins报如下错误:

/home/jenkins/XXXXXX@tmp/durable-d67c81b9/script.sh: 2: 
/home/jenkins/XXXXXX@tmp/durable-d67c81b9/script.sh: source: not found

从报错上看是找不到source命令,很奇怪为什么会跑到@tmp目录下取找这个命令,后来的解决方法是:
我的docker镜像是基于Ubuntu系统,默认使用dash,docker在没有指定的情况下会调用系统中的dash,修改docker中sh的指向,指向bash 该问题就能找到source命令了。
1、进入docker容器:

docker run -it XXXXXXXXX 

2、查看默认sh的指向

ls -l /bin/sh

3、修改指向:执行命令选择否

sudo dpkg-reconfigure dash
选择否
或者使用链接指向:
ln -s /bin/bash /bin/sh

4、查看修改是否成功

   ls -l /bin/sh

5、退出并将容器打上tag并保存为镜像,下次使用新的镜像即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值