Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Unix Bash脚本导致git克隆无法工作_Linux_Git_Bash_Shell_Unix - Fatal编程技术网

Linux Unix Bash脚本导致git克隆无法工作

Linux Unix Bash脚本导致git克隆无法工作,linux,git,bash,shell,unix,Linux,Git,Bash,Shell,Unix,我有一个bash脚本(script1.sh),在其中执行git克隆。 然后,从该存储库中运行另一个脚本(script2.sh),该脚本运行良好。 我运行script2.sh很好,但是git回购是不存在的。任何文件夹都不存在。如果我在命令行上运行git克隆,它会很好地克隆它。 为什么我的脚本没有git正确克隆我的repo 如何运行第一个脚本 sudo bash script1.sh 脚本1.sh cd /home/ubuntu git clone http://mygit-thing.com/m

我有一个bash脚本(script1.sh),在其中执行git克隆。 然后,从该存储库中运行另一个脚本(script2.sh),该脚本运行良好。 我运行script2.sh很好,但是git回购是不存在的。任何文件夹都不存在。如果我在命令行上运行git克隆,它会很好地克隆它。 为什么我的脚本没有git正确克隆我的repo

如何运行第一个脚本

sudo bash script1.sh
脚本1.sh

cd /home/ubuntu
git clone http://mygit-thing.com/myrepository.git localfolder
#run script from the repo
sudo bash localfolder/script2.sh
脚本2.sh

~ 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
如果它不起作用,可能是因为您当前的用户权限或您的fs是只读的,您不允许在
$home
上写入,您可以通过执行
mount
而不选择,检查它是否会列出所有已装入的fs


另外,不建议从脚本内部执行sudo。目前,你基本上是在sudo上做sudo。如果您想确保正确的用户正在执行您的脚本,最好检查当前id,而不是执行嵌套的sudo。

正如@jibe所建议的,您是从sudo调用bash,它将从不同的位置调用
bash
。提供本地git存储库的完整路径。

在编写蓝绿色部署脚本的过程中,我遇到了同样的问题,我解决了用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的情况下打电话之前,我面临以下问题

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

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

当您在命令行上运行git clone时,您是否也使用sudo运行它?如果您可以运行script2.sh,它必须在某个地方。你试过find命令了吗?@Bhavesh,我不这么认为,他改到了他的主目录,这样他就可以使用相对路径名了。script1.sh正在成功运行repo中的script2.sh。这告诉我它至少在第一个脚本的范围内克隆了,克隆意味着它实际上不加载文件,所以范围并不重要。它一定还在某个地方,只是因为某种原因你找不到它。我试着做同样的事情,对我来说很有用。这里有点奇怪。谢谢,在我的第一个脚本中,我忘了将cd刻录到另一个目录,忘了返回到原始目录。绝对路径解决了这个问题。