Предоставление оболочки не запускает команду sed
Я хочу запустить 2 команды ниже, чтобы сделать терминал красочным. Они работают на терминале, но не в скрипте оболочки.
bootstrap.sh:
#!/usr/bin/env bash
sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" ~/.bashrc
. ~/.bashrc
Если в конце я добавляю обновление apt-get, выполняется только обновление apt-get.
1 ответ
Решение
[Поставщик оболочки Vagrant][1] работает с privileged = true
по умолчанию:
privileged (логическое значение) - указывает, выполнять ли сценарий оболочки как привилегированный пользователь или нет (sudo). По умолчанию это "правда".
Когда вы выполняете vagrant ssh
вы входите в ВМ как vagrant
пользователь.
Вот почему:
sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" ~/.bashrc
сделал изменения в root's
~/.bashrc
,
Решение: выполнить sed
в vagrant's
домашняя папка .bashrc
:
sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" /home/vagrant/.bashrc
Ваш финал bootstrap.sh
является:
#!/usr/bin/env bash
sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" /home/vagrant/.bashrc
. /home/vagrant/.bashrc