2016-08-01 92 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存儲庫的完整路徑。