Я использую Vagrant с VirtualBox для создания гостевой виртуальной машины Ubuntu на хосте Windows 10. Вот мой 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

А вот и файл bootstrap.sh.

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

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

ls -la

И все же по какой-то причине он никогда не создает .bash_aliases в каталоге пользователя vagrant. Я могу SSH в поле и запустить ту же команду, и она работает. Как мне создать файл .bash_aliases в каталоге пользователя vagrant?

1 ответ1

0

Догадаться. Есть как минимум два решения.

Решение 1. Запуск с privileged значением false

В Vagrantfile измените эту строку ...

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

к этому:

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

Vagrant будет работать как пользователь vagrant, а не как root (sudo).

Решение 2. Создайте файл непосредственно в /home/vagrant/.bash_aliases

Изменить...

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

к этому:

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

Это записывает непосредственно в каталог пользователя vagrant.

Я пошел с решением 2.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .