Как перезагрузить .bash_profile из командной строки?

641

Как я могу перезагрузить .bash_profile из командной строки? Я могу заставить оболочку распознавать изменения в .bash_profile путем выхода и входа в систему, но я хотел бы иметь возможность делать это по требованию.

Теги:
.bash-profile

11 ответов

1099
Лучший ответ

Просто введите source ~/.bash_profile

В качестве альтернативы, если вам нравится сохранять нажатия клавиш, вы можете ввести . ~/.bash_profile

  • 35
    Как насчет alias BASHRELOAD=". ~/.bash_profile" . Если вы делаете это часто, вы можете просто назвать его как br .
  • 1
    Любая причина, почему я должен делать это каждый раз / сеанс? Я не могу сохранить изменения, внесенные в .bash_profile, даже если они есть в файле, когда я открываю его в редакторе. Смешение.
Показать ещё 2 комментария
67
. ~/.bash_profile

Просто убедитесь, что у вас нет зависимостей от текущего состояния.

  • 10
    Почему это работает? Т.е. что это такое . команда в этом случае?
  • 5
    оператор точки: . это просто псевдоним для source команды.
Показать ещё 5 комментариев
16

Просто введите:

. ~/.bash_profile

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

Примечание:

Когда вы открываете терминал, терминал запускает интерактивный режим bash in (non-login), что означает, что он будет источником ~/.bashrc.

~/.bash_profile создается только bash при запуске в режиме интерактивного входа. Обычно это происходит только при входе в консоль (Ctrl + Alt + F1.. F6) или подключении через ssh.

10
  • Сохранить .bash_profile файл
  • Откройте домашнюю страницу пользователя, набрав cd
  • Перезагрузить профиль . .bash_profile
  • 8
    Просто иди домой с cd . Нет необходимости для ~ .
  • 6
    Нет необходимости cd - вы не можете просто загрузить его из каталога вы находитесь в данный момент: . ~/.bash_profile
Показать ещё 1 комментарий
9

Вы также можете использовать эту команду для перезагрузки ~/.bash_profile для этого пользователя. Обязательно используйте тире.

su - username
  • 3
    Это вызовет всю оболочку внутри оболочки, далекую от идеальной. Другие параметры просто повторно выполняют соответствующий файл, означая, что они (A) действительно имеют отношение к заданному вопросу и (B) не накапливают оболочки и, возможно, перезагружают другие вещи, которые не должны быть (env vars и т. Д.). Есть правильные пути , чтобы заменить текущую оболочку прямой (без вложенности), но так как это не по теме, я оставлю заинтересованные читатель искать в другом месте.
  • 2
    вы открываете другую оболочку, это не перезагрузка, вы также можете открыть новый терминал или перезаписать
4

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

. !$

Это источник файла, который вы только что редактировали в истории. См. Что такое доллар доллара в bash.

3

Добавьте alias bashs="source ~/.bash_profile" в свой bash файл. Таким образом, вы можете вызвать bashs со следующего раза

  • 1
    Я псевдоним, чтобы reset - легче запомнить
  • 0
    В bash уже есть команда сброса.
1

Я хотел бы опубликовать быстрый ответ, что при использовании source ~/.bash_profile или в ответах, упомянутых выше, стоит упомянуть, что это только перезагружает ваш профиль bash на текущей вкладке или сеансе, который вы просматриваете. Если вы хотите перезагрузить профиль bash на каждой вкладке/оболочке, вам нужно ввести эту команду вручную в каждом из них.

Если вы используете iTerm, вы можете использовать CMD + SHIFT + я для ввода команды во все текущие вкладки. Для терминала может быть полезно ссылаться на эту проблему ;

1

Я использую Debian, и я могу просто набрать exec bash, чтобы добиться этого. Я не могу сказать, будет ли это работать на всех других дистрибутивах.

  • 1
    Это не будет работать в Mac (по крайней мере, не в той версии, которую я использую - Sierra), потому что простое выполнение этого запускает оболочку без входа в систему, которая не запускает .bash_profile
  • 0
    @Ulukai, видимо, просто печатал . .bash_profile находясь в вашем домашнем каталоге на Mac, сделает эту работу. То же, что и ответ, приведенный выше 7urkm3n.
1

Если файл .bash_profile не существует, вы можете попробовать выполнить следующую команду:

. ~/.bashrc 

или

 source ~/.bashrc

вместо .bash_profile. Вы можете найти дополнительную информацию о bashrc

0

Я запускаю Sierra, и некоторое время работал над этим (пробовал все рекомендуемые решения). Я запутался, поэтому, в конце концов, попробовал перезагрузить компьютер! Он работал

мой вывод состоит в том, что иногда требуется жесткий reset

  • 1
    Майк да, полный сброс будет работать, потому что все загружается заново. Если внесенные вами изменения действительны, они вступят в силу при следующей загрузке. Однако вам будет проще немного покопаться, чтобы найти команду / метод, чтобы просто обновить bash без необходимости делать это все время. Будет способ достичь этого без перезагрузки, что, конечно, потребует слишком много времени, чтобы посмотреть, сработают ли последние изменения! Возможно взгляните на osxdaily.com/2016/06/07/…
  • 0
    да, я попытался использовать как сокращенную, так и полную команду для перезагрузки профиля / пути bash. это не сработало, только вышел из системы и снова работал. странный

Ещё вопросы

Сообщество Overcoder
Наверх
Меню