Vagrant Shell 作为用户成功执行,但没有 'stick'
Vagrant Shell Executes Successfully as User but it doesn't 'stick'
此代码似乎在 'vagrant up' 上运行良好,但是当我 'vagrant ssh' 进入虚拟机时,我必须重做“#doesn't take”块中的所有内容,即使我看到脚本正在 运行 时成功输出。
在 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 中重新运行?有什么我可以做的让它们 'take' 而 运行 宁作为脚本吗?使我抓狂。感谢您的帮助。
更新——刚刚发现 npm 和 bower 命令确实采用了——唯一似乎在脚本中不起作用的命令是 'nvm use 0.10.33'
nvm use
仅为该 shell 会话设置节点版本。
要使其适用于任何新的 shell,您应该改用 nvm alias default 0.10.33
。 nvm README:
中简要提到了这一点
To set a default Node version to be used in any new shell, use the
alias 'default':
nvm alias default stable
这仅适用于新的 shell,因此如果您想同时执行任何命令,您还需要使用 nvm use 0.10.33
。
在您的情况下,您可能只想在 userScript.sh.
节点配置的末尾添加 nvm alias default 0.10.33
命令
此代码似乎在 'vagrant up' 上运行良好,但是当我 'vagrant ssh' 进入虚拟机时,我必须重做“#doesn't take”块中的所有内容,即使我看到脚本正在 运行 时成功输出。
在 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 中重新运行?有什么我可以做的让它们 'take' 而 运行 宁作为脚本吗?使我抓狂。感谢您的帮助。
更新——刚刚发现 npm 和 bower 命令确实采用了——唯一似乎在脚本中不起作用的命令是 'nvm use 0.10.33'
nvm use
仅为该 shell 会话设置节点版本。
要使其适用于任何新的 shell,您应该改用 nvm alias default 0.10.33
。 nvm README:
To set a default Node version to be used in any new shell, use the alias 'default':
nvm alias default stable
这仅适用于新的 shell,因此如果您想同时执行任何命令,您还需要使用 nvm use 0.10.33
。
在您的情况下,您可能只想在 userScript.sh.
节点配置的末尾添加nvm alias default 0.10.33
命令