2015-06-25 83 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