Vagrant - 供应脚本不更改目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vagrant - 供应脚本不更改目录相关的知识,希望对你有一定的参考价值。
新来的流浪汉,请帮忙!
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "laravel/homestead"
config.vm.provision "shell", path: "vm-setup/provision.sh"
end
VM-建立/ provision.sh
# Update apt-get
apt-get -y update
# Install tree
apt-get install tree
# Create .bash_aliases
sudo echo 'alias cls="clear"' >> ~/.bash_aliases
sudo chsh -s $(which zsh) vagrant
cd /vagrant
provision.sh文件运行正常。当我运行“vagrant provision”时,它会更新apt-get,安装树甚至将shell更改为ZSH。
但sudo echo 'alias cls="clear"' >> ~/.bash_aliases
和cd /vagrant
线不起作用,不知道为什么。当我vagrant ssh
进入机器,我被带到根目录(/home/vagrant
)。我想从/vagrant
文件夹开始。
答案
Vagrant's shell provisioner默认使用privileged = true
运行:
privileged(boolean) - 指定是否以特权用户身份执行shell脚本(sudo)。默认情况下,这是“true”。
当您执行vagrant ssh
时,您将以vagrant
用户身份登录VM。
这就是为什么:
1.
# Create .bash_aliases sudo echo 'alias cls="clear"' >> ~/.bash_aliases
它写入root's
~ / .bash_aliases,它确实存在:
root@vagrant:~# id
uid=0(root) gid=0(root) groups=0(root)
root@vagrant:~# cat .bash_aliases
alias cls="clear"
解决方案:写入vagrant's
主文件夹:
# Create .bash_aliases
echo 'alias cls="clear"' >> /home/vagrant/.bash_aliases
chown vagrant:vagrant /home/vagrant/.bash_aliases
2.
cd /vagrant
这意味着在配置脚本中更改了文件夹,没有别的。
解决方案:将此语句添加到vagrant's
.bash_aliases
:
echo 'cd vagrant' >> /home/vagrant/.bash_aliases
你最后的vm-setup/provision.sh
是:
# Update apt-get
apt-get -y update
# Install tree
apt-get install tree
# Create .bash_aliases
echo 'alias cls="clear"' >> /home/vagrant/.bash_aliases
echo 'cd /vagrant' >> /home/vagrant/.bash_aliases
chown vagrant:vagrant /home/vagrant/.bash_aliases
chsh -s $(which zsh) vagrant
以上是关于Vagrant - 供应脚本不更改目录的主要内容,如果未能解决你的问题,请参考以下文章