Gdy tmux uruchamia się lub otwiera nowe okno, nie ładuje mojego .profileani .bashrc. Za . ~/.bashrckażdym razem piszę . Czy istnieje sposób, aby stało się to automatycznie?
Gdy tmux uruchamia się lub otwiera nowe okno, nie ładuje mojego .profileani .bashrc. Za . ~/.bashrckażdym razem piszę . Czy istnieje sposób, aby stało się to automatycznie?
Odpowiedzi:
Tak, na końcu wpisz .bash_profilewiersz:
. ~/.bashrc
To automatycznie pobiera plik rc w tych okolicznościach, w których normalnie przetwarzałby tylko profil.
Zasady dotyczące bashuruchamiania 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 bashwyjś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 ~/.bashrcjest 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-commandpolecenie-powłokiWartość domyślna to pusty ciąg, który instruuje tmux, aby utworzył powłokę logowania przy użyciu wartości
default-shellopcji.
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_ENVDziwne interaktywne wymaganie ładowania bez logowania dezorientuje ludzi również w innych sytuacjach. Najlepszym rozwiązaniem jest zmiana wymogu ładowania ~/.bashrcjak 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 tmuxZ tego wątku:
wydaje się, że użycie .bash_profilebę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_profileplik, jeśli go nie masz w~.bash_profileput source ~/.bashrclubsource ~/.profileTeraz 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, tmuxokna / sesje używają powłoki logowania, która ~/.profilepodczas uruchamiania szuka pośród innych plików.
Chciałem, aby zsh zaczynał się od każdego nowego tmuxokna, więc umieściłem exec zshna dole mojego ~/.profile.