On a new setup, tmux is using bash instead of my default (zsh).
How can I force it to use zsh?
On a new setup, tmux is using bash instead of my default (zsh).
How can I force it to use zsh?
set-option -g default-shell /bin/zsh
in ~/.tmux.conf
or /etc/tmux.conf
. Works on Fedora.
You can reload the config with <leader>: source-file <conf file>
e.g.
<C-b>: source-file ~/.tmux.conf
You would need to do it for every tmux instance. Otherwise you may restart tmux with killall tmux; tmux
tmux
. Seems obvious but took me a good hour to figure out!
Sep 20, 2012 at 20:55
killall tmux; tmux
. Took me quite a while to figure out.
bind R source-file ~/.tmux.conf \; display-message " Config reloaded..".
Jul 2, 2013 at 8:01
tmux kill-server
instead.
First, ensure your default shell is set properly to zsh
by running this in your command line:
chsh -s $(`which zsh`) $USER
Placing the following in your ~/.tmux.conf is a more robust option for any shell.
set-option -g default-shell $SHELL
chsh -s
) as tmux offers an option independent of that.
May 30, 2017 at 6:00
For MacOS users, drop this line in the bottom of your ~/.tmux.conf
set-option -g default-command "reattach-to-user-namespace -l zsh"
After you add that, kill and restart your tmux server and all should work.
set-option -g default-shell
? the above does not seem to work with the Fish shell.
tmux appears to use the SHELL
environment variable, so the following should work:
SHELL=/usr/bin/zsh tmux
or
env SHELL=/usr/bin/zsh tmux
/bin/bash
to ensure nothing non-iteractive breaks. iTerm will not set $SHELL
to the new shell name (unsure why), and bash initialisation will set it to the login shell if unset at startup. tmux then uses this value if default-shell
is not set explicitly.
Nov 4, 2016 at 8:38
env SHELL=/usr/bin/zsh tmux
is better? (updated the answer).
If you want to force tmux to use the same shell as specified in your environment variable, you could use:
# force SHELL ENV variable as shell
set-option -g default-shell ${SHELL}
in your ~/.tmux.conf
or /etc/tmux.conf
.
To get the change to actually take effect, you may need to tmux kill-server
and then tmux
to restart tmux.
The accepted answer did not work for me.
I had to write both
set -g default-shell "/bin/bash"
and
set -g default-command "/bin/bash"
in my ~/.tmux.conf
— Dont forget to run the following commands to reload the tmux.conf:
tmux kill-server; tmux
Im am using tmux -V
2.6 under Ubuntu 18 in the gnome-shell emulator.
I also enhanced tmux with https://github.com/samoshkin/tmux-config. Check it out, it's really cool.
Use chsh(1)
:
chsh -s /bin/zsh $USER
Log-out and log-in again fixed my problem. When echoed $SHELL
it was still /bin/bash
but after log-out it was changed to /usr/bin/zsh
For me I had to replace:
default-command "/usr/local/bin/fish"
default-shell "/usr/local/bin/fish"
with
set-option -g default-command "/usr/local/bin/fish"
set-option -g default-shell "/usr/local/bin/fish"
in .tmux.conf
and run command tmux kill-server; tmux
set-option -g
instead of set -g
. different versions of tmux most probably
I wanted it to force to use an custom .bashrc. The following should work for any shell. My new is .tmux-bashrc is just an copy of .bashrc , minus the ncal or cowsay, etc... The speed improvements are now apparent.
in ~/.tmux.conf
set-option -g default-shell $SHELL
set-option -g default-command "$SHELL --init-file .tmux-bashrc"
As for me, I use Arch Linux inside Windows WSL2 and I have done chsh -s /bin/zsh $USER
and when entering tmux
it would not correctly load zsh(show some errors e.g. add-zsh-hook function definition file not found
and so on.
If I enter zsh
manually again, everything works fine.
And I found that inside ~/.tmux.conf
add one line set -g default-command /bin/zsh
should be the answer to fix this problem but I don't know why setting default-shell
or setting SHELL
variable was in vain.