2

Я запускаю свою бродячую инициализацию с помощью скрипта bootstrap.sh . Скрипт работает нормально, за исключением одной строки:

echo "source /root/.venvburrito/startup.sh" >> ~/.profile

Эта строка терпит неудачу. Я не получаю никакой информации об этом, но когда я выполняю vagrant ssh и проверяю файл ~/.profile я вижу, что source /root/.venvburrito/startup.sh не добавляется в файл.

Как я могу добавить source /root/.venvburrito/startup.sh в файл, чтобы команда получала каждый раз, когда я делаю vagrant ssh?

3 ответа3

2

Поставщики оболочки (и большинство других) запускаются от имени пользователя root с помощью sudo . Но для инициатора оболочки вы можете установить для privileged атрибута значение false чтобы он работал как пользователь SSH.

Пример:

Vagrant.configure("2") do |config|
  # ...

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

Смотрите документацию для более подробной информации.

1

Запуск сценария с vagrant provision:

#whoami
root
#echo $HOME
/root

по сравнению с запущенным vagrant ssh:

#whoami
vagrant
#echo $HOME
/home/vagrant

Другими словами, когда я использую ~/.profile , ~ расширяется до /root в скрипте обеспечения по сравнению с тем, когда я использую его после того, как я sssh в виртуальный ящик, где он расширяется до /home/vagrant .

Поэтому, чтобы добавить строку в файл ~/.profile которому вы можете получить доступ с помощью ssh, вам понадобится следующая строка в вашем сценарии обеспечения:

echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile

Если вы используете printenv вы можете увидеть все установленные переменные env. Это показывает, что вы также можете использовать:

echo "source /root/.venvburrito/startup.sh" >> $PWD/.profile
0

Я столкнулся с тем же. После прочтения комментария @ tmatilai я понял, что он фактически установил его для пользователя root!

Ты можешь сделать

sudo su -

чтобы получить root. и там вы увидите свою строку, добавленную в файл (в /root/.profile)

Кроме того, вместо того, чтобы устанавливать привилегии, как он предложил, вы можете использовать полное имя вместо:

echo "source /root/.venvburrito/startup.sh" >> /home/vagrant/.profile

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