Как мне заставить оболочку, из которой я вызвал скрипт, перезагрузить .bashrc
изнутри скрипта?
Я пытаюсь создать скрипт «нового ящика», который все настраивает так, как нужно Мне это нравится. Все работает, кроме перезагрузки .bashrc
.
Я знаю, что могу «просто» сделать . ~ / .bashrc
или exec bash
или любой другой способ применить изменения после выполнения сценария. Но это как бы побеждает цель сделать исправление с помощью одной кнопки, и зайти так далеко только для того, чтобы прикрутить последний шаг, сводит меня с ума lol
Я пробовал добавить весь исходный код ~. / bashrc
exec bash
материал для сценария, но без радости, поскольку он только перезагружает его для среды сценария, а не для вызывающей оболочки
Я все еще новичок, так что это, вероятно, что-то очень очевидное, что объясняет почему я не мог googlefu ответ>. <
любая помощь была бы очень признательна.
Это не могло бы работать на все. И может делать что-то, что я не должен делать.. но в моих целях это сделало задание.
Для script.sh
если я называю его . script.sh
вместо bash script.sh
все, кажется, выполняет и обновляет соответственно.
Yay!
Я знаю, что это будет звучать глупым, я являюсь также новым здесь, но в чем при экспорте сред, Вы нуждались непосредственно из сценария и затем добавили их к .bashrc для более позднего использования?
Скажем, т.е. проверяя, существует ли переменная окружения и загружает его:
### MySQL
if [ -z "$MYSQL_HOME" ]; then
export MYSQL_HOME="/usr/local/mysql"
export PATH="$MYSQL_HOME/bin:$PATH"
fi
и затем скопируйте этот код сегмента в .bashrc также...
Править
Я на самом деле споткнулся к этому Обновлению ~/.bashrc файл для сценария