W nowej konfiguracji tmux używa bash zamiast mojego domyślnego (zsh).
Jak mogę zmusić go do używania zsh?
W nowej konfiguracji tmux używa bash zamiast mojego domyślnego (zsh).
Jak mogę zmusić go do używania zsh?
Odpowiedzi:
set-option -g default-shell /bin/zsh
w ~/.tmux.conflub /etc/tmux.conf. Działa na Fedorze.
Może być konieczne zrestartowanie tmux za pomocą killall tmux; tmux
tmux. Wydaje się to oczywiste, ale zajęło mi to dobrą godzinę!
killall tmux; tmux. Zajęło mi to trochę czasu, żeby się domyślić.
bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
tmux source-file ~/.tmux.confz wiersza poleceń.
tmux kill-serverzamiast tego.
Najpierw upewnij się, że domyślna powłoka jest poprawnie ustawiona na zsh, uruchamiając to w wierszu poleceń:
chsh -s $(`which zsh`) $USER
Umieszczenie śledzenia w ~ / .tmux.conf jest bardziej niezawodną opcją dla dowolnej powłoki.
set-option -g default-shell $SHELL
chsh -s), ponieważ tmux oferuje opcję niezależną od tego.
Upuść tę linię na dole swojego ~/.tmux.conf
set-option -g default-command "reattach-to-user-namespace -l zsh"
Po dodaniu tego zabij i zrestartuj serwer tmux i wszystko powinno działać.
tmux kill-serverto polecenie zakończenia wszystkich serwerów tmux
set-option -g default-shell ? powyższe wydaje się nie działać ze skorupą ryby.
Jeśli chcesz zmusić tmux do używania tej samej powłoki, jak określono w zmiennej środowiskowej, możesz użyć:
# force SHELL ENV variable as shell
set-option -g default-shell ${SHELL}
w twoim ~/.tmux.conflub /etc/tmux.conf.
Aby uzyskać zmianę rzeczywiście odniosły skutek, może być konieczne tmux kill-server, a następnie tmuxzrestartować tmux.
Wylogowanie i ponowne zalogowanie rozwiązało mój problem. Gdy echo $SHELLbyło nadal, /bin/bashale po wylogowaniu zostało zmienione na/usr/bin/zsh
Wydaje się, że tmux używa SHELLzmiennej środowiskowej, więc powinny działać:
SHELL=/usr/bin/zsh tmux
lub
env SHELL=/usr/bin/zsh tmux
/bin/bashaby zapewnić, że nic nie będzie iteracyjne. iTerm nie ustawi $SHELLnowej nazwy powłoki (nie wiem dlaczego), a inicjalizacja bash ustawi ją na powłokę logowania, jeśli zostanie rozbrojona podczas uruchamiania. tmux następnie używa tej wartości, jeśli default-shellnie jest jawnie ustawiona.
env SHELL=/usr/bin/zsh tmuxlepiej? (zaktualizowałem odpowiedź).
Dodaj to do swojego ~/.tmux.conf
set -g default-command /usr/local/bin/fish
Przyjęta odpowiedź nie działała dla mnie.
Musiałem napisać oba
set -g default-shell "/bin/bash"
i
set -g default-commanmd "/bin/bash"
w moim ~/.tmux.conf- nie zapomnij tmux kill-server; tmux, aby ponownie załadować tmux.conf
Używam tmux -V2.6 pod Ubuntu 18 w emulatorze powłoki gnome.
Ulepszyłem również Tmux za pomocą https://github.com/samoshkin/tmux-config . Sprawdź, to naprawdę fajne.
Dla mnie musiałem wymienić:
default-command "/usr/local/bin/fish"
default-shell "/usr/local/bin/fish"
z
set-option -g default-command "/usr/local/bin/fish"
set-option -g default-shell "/usr/local/bin/fish"
w .tmux.conf
i polecenia uruchomieniatmux kill-server; tmux
set-option -gzamiast set -g. prawdopodobnie różne wersje tmux
setjest pseudonimem dla set-option.