这个代码似乎在“流浪汉”中工作得很好,但是当我“流浪汉”时,进入vm我必须重做#34中的所有内容;#不采取"阻止,即使我在脚本运行时看到了成功的输出。
在Vagrantfile中:
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 9000, host: 9000, auto_correct: true
config.ssh.forward_agent = true
config.vm.synced_folder ".", "/home/vagrant/www", create: true, group: "vagrant", owner: "vagrant"
config.vm.provision :shell, path: "vagrant/rootScript.sh"
config.vm.provision :shell, privileged: false, path: "vagrant/userScript.sh"
end
rootScript.sh:
sudo apt-get update
sudo apt-get install -y git
sudo apt-get install python-software-properties python g++ make
sudo apt-get update
userScript.sh:
cd www
touch test.txt # this is successfully created in the correct folder
whoami # 'vagrant'
echo "${PWD}" # 'home/vagrant/www'
# # Installing nvm
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
# # This enables NVM without a logout/login
export NVM_DIR="/home/vagrant/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
# Install a node and alias
nvm install 0.10.33
# ************** doesn't take **************
nvm use 0.10.33
npm install -g npm@latest
npm install -g bower grunt-cli
npm install
bower install
# *******************************************
whoami # still 'vagrant'
echo "${PWD}" # still 'home/vagrant/www'
为什么需要在ssh中重新运行这些命令?有什么我可以做的,让他们采取'采取'在作为脚本运行时?使我抓狂。谢谢你的帮助。
UPDATE - 刚刚发现npm和bower命令DID采用 - 在脚本中似乎没有工作的命令是  nvm使用0.10.33'
答案 0 :(得分:1)
nvm use
仅设置该shell会话的节点版本。
要使其适用于任何新shell,您应该使用nvm alias default 0.10.33
。这在nvm README中简要提到:
要设置要在任何新shell中使用的默认节点版本,请使用 别名'default':
nvm alias default stable
这只适用于新的shell,但如果你想同时执行任何命令,你也需要使用nvm use 0.10.33
。
在您的情况下,您可能只想在userScript.sh中的节点配置末尾添加nvm alias default 0.10.33
命令。