Резюме
Когда я создаю новый сеанс tmux, мое приглашение извлекается из конфигурации bash по умолчанию, и мне приходится вручную запускать source ~/.bashrc
мое настраиваемое приглашение.
Анализ
Я использую машину RHEL 7. Я начал замечать это поведение после обновления bash некоторое время назад, но до сих пор не удосужился задать вопрос (и не уверен, какое обновление это начало происходить вокруг).
Например, я настроил мое приглашение так:
[user@hostname ~]$
Всякий раз, когда я начинаю новый сеанс tmux, он использует то, что кажется bash по умолчанию:
-sh-4.2$
Быстрый запуск source ~/.bashrc
всегда решает проблему, но раздражает, что я должен делать это каждый раз, когда хочу исправить что-то маленькое. Любые идеи о том, как заставить tmux сделать это снова автоматически?
Если потребуется дополнительная информация, я с удовольствием предоставлю.
tmux.conf
Для справки, у меня есть мой tmux.conf
файл ниже, хотя вряд ли это можно назвать заказным.
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
source ~/.bashrc
строку в свой.bash_profile
, попытался выйти и снова войти, создать новый сеанс tmux, но без изменений. Есть идеи?.tmux.conf
строкуset-option -g default-shell "/bin/bash"
. Это должно решить вашу проблему (по крайней мере, я на это надеюсь)!bash
Homebrew и это не работает, измените"/bin/bash"
на"/usr/local/bin/bash"
.Это связано с файлами инициализации Bash. По умолчанию
~/.bashrc
используется в интерактивной оболочке без входа в систему . Это не будет получено в оболочке входа в систему. Tmux по умолчанию использует оболочку входа в систему . Следовательно, оболочки, запущенные tmux skip~/.bashrc
.Файлы инициализации для Bash,
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(Только первый, который существует)/etc/bash.bashrc
(немного Linux; не в Mac OS X)~/.bashrc
$BASH_ENV
Решение
Странное интерактивное требование загрузки без входа в систему сбивает людей с толку и в других ситуациях. Лучшим решением является изменение требования загрузки в
~/.bashrc
качестве только в интерактивном режиме , что это именно то , что некоторые дистрибутивы, такие как Ubuntu, делают.Это должно быть решение, которое вы хотите. И я рекомендую каждому пользователю Bash настроить это в своем профиле.
Ссылки
man tmux
источник
Добавление следующего к
.tmux.conf
:НЕ дает желаемого результата.
Только при добавлении
source "$HOME/.bashrc"
к~/.bash_profile
намеченному результату достигается.Это будет работать в активном сеансе tmux при открытии нового окна или панели, а также при отключении и открытии нового сеанса tmux.
Проверено на:
источник