Script de provisão da shell não criando .bash_aliases

0

Estou usando o Vagrant com o VirtualBox para criar uma VM guest do Ubuntu, em um host do Windows 10. Aqui está o meu Vagrantfile:

# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.network "forwarded_port", guest: 8080, host: 8100

  config.vm.provision "shell", path: "./bootstrap.sh"
end

E aqui está o arquivo bootstrap.sh.

printf "Working directory is: %s." $(pwd)

if [ ! -f '~/.bash_aliases' ]; then
    printf "# This is a comment." > ~/.bash_aliases ;
fi;

ls -la

No entanto, por algum motivo, ele nunca cria as .bash_aliases no diretório do usuário vagabundo. Eu posso SSH na caixa e executar exatamente o mesmo comando e funciona. Como faço para criar o arquivo .bash_aliases no diretório do usuário vagabundo?

    
por kevin628 19.03.2016 / 19:33

1 resposta

0

Descobri isso. Existem pelo menos duas soluções.

Solução 1 - Executar com privileged definido como false

No Vagrantfile, mude esta linha ...

config.vm.provision "shell", path: "./bootstrap.sh"

para isso:

config.vm.provision "shell", path: "./bootstrap.sh", privileged: false

O Vagrant será executado como o usuário vagabundo, não como root ( sudo ).

Solução 2 - Criar arquivo diretamente em /home/vagrant/.bash_aliases

Alterar ...

if [ ! -f '~/.bash_aliases' ]; then
    printf "# This is a comment." > ~/.bash_aliases ;
fi;

para isso:

if [ ! -f /home/vagrant/.bash_aliases ]; then
    printf "# This is a comment." > /home/vagrant/.bash_aliases ;
fi;

Isso grava diretamente no diretório do usuário vagabundo.

Eu fui com a solução 2.

    
por 19.03.2016 / 19:53