Предоставление оболочки не запускает команду 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
Другие вопросы по тегам