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.conf
lub /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.conf
z wiersza poleceń.
tmux kill-server
zamiast 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-server
to 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.conf
lub /etc/tmux.conf
.
Aby uzyskać zmianę rzeczywiście odniosły skutek, może być konieczne tmux kill-server
, a następnie tmux
zrestartować tmux.
Wylogowanie i ponowne zalogowanie rozwiązało mój problem. Gdy echo $SHELL
było nadal, /bin/bash
ale po wylogowaniu zostało zmienione na/usr/bin/zsh
Wydaje się, że tmux używa SHELL
zmiennej środowiskowej, więc powinny działać:
SHELL=/usr/bin/zsh tmux
lub
env SHELL=/usr/bin/zsh tmux
/bin/bash
aby zapewnić, że nic nie będzie iteracyjne. iTerm nie ustawi $SHELL
nowej 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-shell
nie jest jawnie ustawiona.
env SHELL=/usr/bin/zsh tmux
lepiej? (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 -V
2.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 -g
zamiast set -g
. prawdopodobnie różne wersje tmux
set
jest pseudonimem dla set-option
.