Как перезагрузить .bashrc без выхода и повторного входа? - PullRequest
1420 голосов
/ 25 марта 2010

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

Ответы [ 17 ]

2282 голосов
/ 25 марта 2010

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

source ~/.bashrc

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

. ~/.bashrc
237 голосов
/ 06 марта 2012

или вы можете использовать;

exec bash

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

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

106 голосов
/ 29 января 2016

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

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

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

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

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

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


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

45 голосов
/ 25 марта 2010

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

. .bashrc
18 голосов
/ 08 марта 2012

В зависимости от вашей среды, просто наберите

bash

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

15 голосов
/ 29 февраля 2016

При этом вам не нужно будет даже вводить "source ~ / .bashrc":

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

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

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

10 голосов
/ 15 февраля 2017
5 голосов
/ 04 октября 2018

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

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

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

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

3 голосов
/ 11 ноября 2018

Я использовал easyengine для настройки моего облачного сервера vultr.
Я нашел свой файл bash на /etc/bash.bashrc.

Так source /etc/bash.bashrc сделал для меня трюк!

обновление

При настройке пустого сервера (Ubuntu 16.04) вы можете использовать приведенную выше информацию, когда вы еще не настроили имя пользователя и входите в систему через root.

Лучше всего создать пользователя (с привилегиями sudo) и вместо этого войти в систему под этим именем.
Это создаст каталог для ваших настроек, включая файлы .profile и .bashrc.
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/

Теперь вы будете редактировать и (и «исходить») файл ~/.bashrc.

На моем сервере это было /home/your_username/.bashrc
(где your_username - это фактически новое имя пользователя, которое вы создали выше, а теперь войдите в систему с помощью)

3 голосов
/ 08 августа 2018

Для меня то, что работает, когда я меняю ПУТЬ, это: exec "$BASH" --login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...