2016-08-01 94 views
1

我有一个bash脚本(script1.sh),我执行git克隆。 然后,从该存储库中,我运行另一个脚本(script2.sh),它运行良好。 我运行script2.sh很好,但git回购是不存在的。任何文件夹只是不存在。如果我在命令行上运行git clone,它就可以很好地克隆它。 为什么我的脚本不能正确克隆我的回购?unix bash脚本导致git克隆不工作

我如何运行第一个脚本。

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

当你在命令行上运行git clone时,你是否也使用sudo运行它? – Jawad

+0

如果你可以运行script2.sh,它必须是* somewhere *。你尝试过查找命令吗? –

+1

@Bhavesh,我不这么认为,他改变了他的主目录,所以他可以使用相对路径名。 –

回答

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 

,如果它不工作,这也许是可能的,你是不是允许在$home写,因为你的当前用户的权限,或者因为你的FS是只读您可以通过执行mount而无选项来检查它,它会列出所有已安装的fs。

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

+0

谢谢,在我的第一个脚本中,我忘了我cd'd到不同的目录,忘了回到我的原始目录。绝对路径解决了这个问题。 –

1

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