2015-06-25 114 views
0

我試圖在使用Vagrant的Ubuntu VM上安裝dnvm。在我vagrantfile我有一個shell腳本,其中包括這行:
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source /root/.dnx/dnvm/dnvm.sh
其下載並執行dnvminstall.sh它安裝並提出dnvm.sh在/root/.dnx/dnvm。 source /root/.dnx/dnvm/dnvm.sh部分似乎沒有工作,因爲當我ssh進入機器,我需要手動運行dnvm工作。 所以問題是,爲什麼在配置期間不執行source /root/.dnx/dnvm/dnvm.sh
Here是整個流浪文件。爲什麼在使用Vagrant shell腳本配置Ubuntu VM時不執行腳本?

+0

我們可以看到VagrantFile嗎? – tomasyany

+0

是的,在問題 – Christian

+0

中增加了一個鏈接。所以我曾經有過類似的問題,並不是腳本沒有執行,而是在不同的會話中執行。我不知道你的'dnvm.sh'腳本是做什麼的,但是可能發生的事情是整個事情在'provisioning'會話中執行,然後當你通過'ssh'創建一個新會話時,它就像它從未執行過。這完全取決於它的功能。您可以通過在'dnvm.sh'上放置一些打印文件功能來檢查它是否被實際執行。 – tomasyany

回答

1

您剛纔在腳本中輸入/usr/local/src/libuv-1.4.2

然後你下載dnvm到該目錄使用curl,然後試圖運行該文件,如果它是在/root/.dnx/dnvm/dnvm.sh,當它實際上是地方下/usr/local/src/libuv-1.4.2

你只需要CD回/root使用前捲曲得到dnvm。所以...

cd /root 
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source /root/.dnx/dnvm/dnvm.sh 

希望這有助於!

+0

不過,'dnvminstall.sh'腳本把'dnvm.sh'放在'/ root/.dnx/dnvm /'不管它從哪裏執行。我會更新這個問題來澄清。 – Christian

+0

'curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH = dev sh && source/root/.dnx/dnvm/dnvm.sh'對我來說很奇怪。所以dnvminstall.sh正在通過管道傳送給sh。那麼如果它返回非零,那麼&&的後半部分會被執行?所以只有第一部分錯誤纔會執行源代碼部分? (非零是bash中的錯誤?)也許我讀錯了。 – tobuslieven

+0

好吧,我擡頭看着&& bash,我讀錯了。它更像如下:所以dnvminstall.sh正在通過管道傳輸。然後如果它返回零,&&後的部分被執行。所以源部分只在第一部分沒有錯誤的情況下執行。所以我想dnvminstall.sh正在返回一個錯誤。從源頭上看,似乎有一些機會可以做到這一點。 – tobuslieven