【筆記】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並保存為鏡像,下次使用新的鏡像即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM