我有一个bash脚本(script1.sh),我执行git克隆。然后,从该存储库,我运行另一个运行正常的脚本(script2.sh)。我运行script2.sh很好,但是git repo不存在。任何文件夹都不存在。如果我在命令行上运行git clone,它就克隆它就好了。为什么我的脚本没有git克隆我的repo正确?
我如何运行第一个脚本。
sudo bash script1.sh
script1.是
cd /home/ubuntu
git clone http://mygit-thing.com/myrepository.git localfolder
#run script from the repo
sudo bash localfolder/script2.sh
script2.是
~ Some unrelated unix commands
注意:我试过查看/ home / ubuntu文件夹但找不到它。它也不是“隐藏”文件。
这可以解决你的问题,取代你的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
如果它不起作用,可能你不能在$home
上写因为你当前的用户权限或因为你的fs是只读的你可以通过执行没有选项的mount
来检查它,它会列出所有已安装的fs。
另一点,不建议在脚本内部进行sudoing。目前你基本上是sudo sudo。如果你想确保正确的用户正在执行你的脚本,你最好检查当前的id而不是嵌套的sudo。
正如@jibe建议的那样,你从sudo调用bash,它将从不同的位置调用bash
。提供本地git存储库的完整路径。
我在编写蓝绿色部署脚本时遇到同样的问题,我解决了用bash调用的问题。
#!/bin/bash
bash /home/ubuntu/deployment-guru/green-deployment.sh
green-deployment.是
#!/bin/sh
cd /home/ubuntu/my_api && git pull origin blue-green-jenkins-integration
在没有bash的情况下打电话之前我遇到了以下问题
权限被拒绝(publickey)。致命:无法从远程存储库读取。
请确保您具有正确的访问权限并且存储库存在。