Vagrant Shell作为用户成功执行,但它并没有“坚持”#39;

时间:2015-04-09 16:27:56

标签: ubuntu permissions npm vagrant nvm

这个代码似乎在“流浪汉”中工作得很好,但是当我“流浪汉”时,进入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'

1 个答案:

答案 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命令。