我有一个bash脚本(script1.sh),我在其中执行git clone。 然后,从该存储库,我运行另一个运行正常的脚本(script2.sh)。 我运行script2.sh很好,但是git repo不存在。任何文件夹都不在那里。如果我在命令行上运行git clone,它就克隆它就好了。 为什么我的脚本没有git克隆我的repo正确?
我如何运行第一个脚本。
sudo bash script1.sh
script1.sh
cd /home/ubuntu
git clone http://mygit-thing.com/myrepository.git localfolder
#run script from the repo
sudo bash localfolder/script2.sh
script2.sh
~ Some unrelated unix commands
注意:我试过查看/ home / ubuntu文件夹但找不到它。它不是一个隐藏的"文件也是。
答案 0 :(得分:1)
这可以解决您的问题,取代script1.sh
:
home=/home/ubuntu
folder=$home/localfolder
git clone http://mygit-thing.com/myrepository.git $folder
#run script from the repo
bash $folder/script2.sh
如果它不起作用,可能由于您当前的用户权限或因为您的fs是只读的而不允许您在$home
上写入您可以通过执行{{1}来检查如果没有选项,它将列出所有已安装的fs。
另一点,不推荐在脚本内部进行侮辱。目前你基本上是sudo sudo。如果你想确保正确的用户正在执行你的脚本,你最好检查当前的id而不是嵌套的sudo。
答案 1 :(得分:1)
正如@jibe建议的那样,你从sudo调用bash,它将从不同的位置调用bash
。提供本地git存储库的完整路径。
答案 2 :(得分:1)
在编写蓝绿色部署脚本期间遇到了相同的问题,我解决了使用bash进行调用的问题。
#!/bin/bash
bash /home/ubuntu/deployment-guru/green-deployment.sh
green-deployment.sh
#!/bin/sh
cd /home/ubuntu/my_api && git pull origin blue-green-jenkins-integration
在不进行bash通话之前,我面临以下问题
权限被拒绝(公钥)。 致命的:无法从远程存储库读取。
请确保您具有正确的访问权限 并且存储库存在。