Как я могу перезагрузить.bashrc и без выхода из системы и обратно?


Если я внесу изменения в .bashrc, Как перезарядить его без выхода из системы и обратно?

14 1239

14 ответов:

вам просто нужно ввести команду:

source ~/.bashrc

или вы можете использовать более короткую версию команды:

. ~/.bashrc

или вы могли бы использовать;

exec bash

делает то же самое. (и легче запомнить, по крайней мере для меня)

exec команда заменяет оболочку с данной программой, в нашем примере она заменяет нашу оболочку с bash (с обновленными файлами конфигурации)

до дополнения и контраста два самых популярных ответа,. ~/.bashrc и exec bash:

оба решения эффективно перезагрузка ~/.bashrc, но есть и различия:

  • . ~/.bashrc или source ~/.bashrc будет сохранить ваша текущая оболочка:

    • за исключением модификаций, которые перезагружаются ~/.bashrc в текущей оболочке (sourcing) делает, the текущая оболочка и ее состояние are сохранил, который включает переменные среды, переменные оболочки, параметры оболочки, функции оболочки и историю команд.
  • exec bash, или, более решительно, exec "$BASH"[1], будет заменить ваша текущая оболочка С новым экземпляром, и поэтому только сохранить ваша текущая оболочка переменные среды (включая те, которые вы определили ad-hoc).

    • другими словами: любые специальные изменения в текущей оболочке с точки зрения переменных оболочки, функций оболочки, параметров оболочки, истории команд теряются.

в зависимости от ваших потребностей, тот или иной подход может быть предпочтительным.


[1] exec bash теоретически может выполнить a разныеbash исполняемый файл, чем тот, который запустил текущую оболочку, если он существует в каталоге, указанном ранее в $PATH. Так как специальная переменная $BASH всегда содержит полный путь к исполняемому файлу, который запустил текущую оболочку,exec "$BASH" гарантированно использовать то же самое исполняемый файл.
Ноту ре "..." вокруг $BASH: двойное цитирование гарантирует, что значение переменной используется как есть, без интерпретации Bash; если значение не имеет встроенных пробелов или других метасимволов оболочки (что маловероятно в этом случае), вам не нужны двойные кавычки, но их использование-хорошая привычка для формирования.

кто-то отредактировал мой ответ, чтобы добавить неправильный английский, но здесь был оригинал, который уступает принято отвечать.

. .bashrc

в зависимости от вашего окружения, просто введя

bash

может также работать.

С не даже типа "источник ~/.bashrc":

включите ваш файл bashrc:

alias rc="vim ~/.bashrc && source ~/.bashrc"

каждый раз, когда вы хотите изменить свой bashrc, просто запустите псевдоним " rc"

тип:

source .bashrc

Я использую следующую команду на msysgit

. ~/.bashrc

более короткая версия

source ~/.bashrc

Это тоже будет работать..

cd ~
source .bashrc

я заметил, что чисто exec bash команда сохранит переменные среды, поэтому вам нужно использовать exec -c bash для запуска bash в пустой среде.

например, вы входите в bash, и export A=1, Если exec bash на A == 1.

если вы exec -cl bash,A пусто.

Я думаю, что это лучший способ сделать свою работу.

для меня то, что работает, когда я меняю путь:exec "$BASH" --login

в зависимости от вашей среды, вы можете добавить скриптов для .bashrc загружается автоматически при открытии сеанса SSH. Недавно я сделал перенос на сервер под управлением Ubuntu, и там .профиль, нет .bashrc или .файл загружается по умолчанию. Для запуска любых скриптов .bashrc следующее, Мне пришлось бежать source ~/.bashrc каждый раз, когда сеанс был открыт, что не помогает при запуске удаленного развертывания.

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

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

откройте сеанс, и он должен загрузить все пути / скрипты, которые у вас есть .bashrc следующее.

Я лично

alias ..='source ~/.bashrc'

в моем bashrc, так что я могу просто использовать "..- чтобы перезарядить его.