Как я могу перезагрузить.bashrc и без выхода из системы и обратно?
Если я внесу изменения в .bashrc
, Как перезарядить его без выхода из системы и обратно?
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
С не даже типа "источник ~/.bashrc":
включите ваш файл bashrc:
alias rc="vim ~/.bashrc && source ~/.bashrc"
каждый раз, когда вы хотите изменить свой bashrc, просто запустите псевдоним " rc"
. ~/.bashrc
варианты
source ~/.bashrc
exec bash
exec
команда заменяет оболочку с заданной программой... - Кто это
я заметил, что чисто
exec bash
команда сохранит переменные среды, поэтому вам нужно использоватьexec -c bash
для запуска bash в пустой среде.например, вы входите в bash, и
export A=1
, Еслиexec bash
наA == 1
.если вы
exec -cl bash
,A
пусто.Я думаю, что это лучший способ сделать свою работу.
в зависимости от вашей среды, вы можете добавить скриптов для .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 следующее.