Gdy tmux uruchamia się lub otwiera nowe okno, nie ładuje mojego .profile
ani .bashrc
. Za . ~/.bashrc
każdym razem piszę . Czy istnieje sposób, aby stało się to automatycznie?
Gdy tmux uruchamia się lub otwiera nowe okno, nie ładuje mojego .profile
ani .bashrc
. Za . ~/.bashrc
każdym razem piszę . Czy istnieje sposób, aby stało się to automatycznie?
Odpowiedzi:
Tak, na końcu wpisz .bash_profile
wiersz:
. ~/.bashrc
To automatycznie pobiera plik rc w tych okolicznościach, w których normalnie przetwarzałby tylko profil.
Zasady dotyczące bash
uruchamiania niektórych plików są skomplikowane i zależą od typu uruchamianej powłoki (logowanie / brak logowania, interaktywna lub nie, itd.), Wraz z argumentami wiersza poleceń i zmiennymi środowiskowymi.
Możesz je zobaczyć na man bash
wyjściu, po prostu poszukaj INVOCATION
- prawdopodobnie będziesz potrzebować trochę czasu, aby to przetrawić i zdekodować :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
Uruchamianie basha wyraźnie zadziałało dla mnie, dodając tę linię do mojego pliku ~ / .tmux.conf:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf
: set -g default-command "/bin/bash"
. Dzięki stary.
Wcześniejsze odpowiedzi dostarczały rozwiązań, ale nie wyjaśniały przyczyny. Tutaj jest.
Jest to związane z plikami init Bash. Domyślnie ~/.bashrc
jest używany w interaktywnej powłoce bez logowania . Nie będzie pochodzić z powłoki logowania. Tmux domyślnie używa powłoki logowania . W związku z tym powłoki uruchamiane przez tmux pomijają ~/.bashrc
.
default-command
polecenie-powłokiWartość domyślna to pusty ciąg, który instruuje tmux, aby utworzył powłokę logowania przy użyciu wartości
default-shell
opcji.
Pliki init 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
Dziwne interaktywne wymaganie ładowania bez logowania dezorientuje 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.
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
To powinno być rozwiązanie, którego pragniesz. I polecam każdemu użytkownikowi Bash skonfigurowanie tego w profilu.
Bibliografia
man tmux
Z tego wątku:
wydaje się, że użycie .bash_profile
będzie działać.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Rozwiązanie, które zadziałało dla mnie, jest następujące:
.bash_profile
plik, jeśli go nie masz w~
.bash_profile
put source ~/.bashrc
lubsource ~/.profile
Teraz problem powinien zostać rozwiązany.
Miałem ten sam problem i dotychczasowe rozwiązania nie działały. Rozwiązanie, które mi się udało, znajdziesz tutaj .
Krótko mówiąc, tmux
okna / sesje używają powłoki logowania, która ~/.profile
podczas uruchamiania szuka pośród innych plików.
Chciałem, aby zsh zaczynał się od każdego nowego tmux
okna, więc umieściłem exec zsh
na dole mojego ~/.profile
.