Unix Bash脚本导致git clone无法正常工作

时间:2016-08-01 07:46:44

标签: linux git bash shell unix

我有一个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文件夹但找不到它。它不是一个隐藏的"文件也是。

3 个答案:

答案 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通话之前,我面临以下问题

权限被拒绝(公钥)。 致命的:无法从远程存储库读取。

请确保您具有正确的访问权限 并且存储库存在。