streszczenie
Kiedy tworzę nową sesję tmux, mój monit wyciąga się z domyślnej konfiguracji bash i muszę ręcznie uruchomić source ~/.bashrc
dla mojego niestandardowego monitu.
Analiza
Używam maszyny RHEL 7. Zacząłem zauważać to zachowanie po aktualizacji bash, ale do tej pory nie zadałem pytania (i nie jestem pewien, która aktualizacja zaczęła się dziać).
Na przykład dostosowałem mój monit, aby wyglądał następująco:
[user@hostname ~]$
Ilekroć rozpoczynam nową sesję tmux, używa ona domyślnej opcji bash:
-sh-4.2$
Szybki przegląd source ~/.bashrc
zawsze rozwiązuje problem, ale denerwujące jest to, że muszę to robić za każdym razem, gdy chcę naprawić coś małego. Jakieś pomysły na to, jak zmusić Tmux do zrobienia tego automatycznie?
Jeśli potrzebuję więcej informacji, chętnie udzielę.
tmux.conf
Dla porównania mam tmux.conf
poniżej mój plik, chociaż nie jest to tak zwane niestandardowe.
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
source ~/.bashrc
wiersz do mojej.bash_profile
, próbowałem wylogować się i zalogować ponownie, utworzyć nową sesję tmux, ale bez zmian. Jakieś pomysły?.tmux.conf
linięset-option -g default-shell "/bin/bash"
. To powinno rozwiązać twój problem (przynajmniej mam taką nadzieję)!bash
przez Homebrew i to nie działa, zmień"/bin/bash"
na"/usr/local/bin/bash"
.Jest to związane z plikami inicjującymi Bash. Domyślnie
~/.bashrc
jest używany w interaktywnej powłoce bez logowania . Nie będzie pozyskiwany w powłoce logowania. Tmux domyślnie używa powłoki logowania . Stąd powłoki rozpoczęte przez tmux skip~/.bashrc
.Pliki początkowe dla Bash,
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(Tylko pierwsza, że istnieje)/etc/bash.bashrc
(niektóre Linux; nie w Mac OS X)~/.bashrc
$BASH_ENV
Rozwiązanie
Dziwne, interaktywne wymaganie ładowania bez logowania myli ludzi również w innych sytuacjach. Najlepszym rozwiązaniem jest zmiana wymogu ładowania
~/.bashrc
jak tylko interaktywny , który jest dokładnie to, co niektóre dystrybucje, takie jak Ubuntu, robisz.To powinno być rozwiązanie, którego pragniesz. I polecam każdemu użytkownikowi Bashowi skonfigurowanie tego w profilu.
Bibliografia
man tmux
źródło
Dodanie następujących elementów do
.tmux.conf
:NIE daje pożądanego rezultatu.
Dopiero po dodaniu
source "$HOME/.bashrc"
do~/.bash_profile
zamierzonego wyniku zostanie osiągnięty.Będzie to działać na aktywnej sesji tmux podczas otwierania nowego okna lub panelu, a także podczas odłączania i otwierania nowej sesji tmux.
Testowane na:
źródło