unix bash脚本导致git克隆不工作
我有一个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的文件夹,无法找到它。这也不是一个“隐藏”文件。
这可以解决你的问题取代你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。
谢谢,在我的第一个脚本中,我忘了我cd'd到不同的目录,忘了回到我的原始目录。绝对路径解决了这个问题。 –
正如@jibe建议的,你从sudo调用bash,它会从不同的位置调用bash
。提供本地git存储库的完整路径。
当你在命令行上运行git clone时,你是否也使用sudo运行它? – Jawad
如果你可以运行script2.sh,它必须是* somewhere *。你尝试过查找命令吗? –
@Bhavesh,我不这么认为,他改变了他的主目录,所以他可以使用相对路径名。 –