I want to set
zsh as the default shell.
I have already executed:
$ chsh -l
$ chsh -s $(which zsh)
Changing shell for stephane.
chsh: Shell not changed.
$ cat /etc/passwd | grep "stephane"
$ echo $SHELL
I don’t understand why
bash stay my default shell
Do you have any idea how I can correct this?
I see also this resources:
[stephane@MiWiFi-R4A-srv ~]$ neofetch
OS: Fedora Linux 35 (Workstation Edition) x86_64
Packages: 1979 (rpm), 24 (flatpak)
Shell: bash 5.1.8
DE: GNOME 41.3
Have you logged out and logged back in? Otherwise the shell change won’t have taken effect.
If you have tried that and it still isn’t working, make sure you aren’t explicitly setting a shell in your terminal settings.
If you want to switch the running shell to zsh(as opposed to the default shell), you can use
Yes, many times, even many reboot.
I just checked, nothing in
.zhrc and when I run
zsh, I am well under
I don’t quite understand this comment, it doesn’t correct the error, does it?
.zshrc, in your terminal program. For example, if you gnome terminal, you can set a shell in the settings there. If that is set to bash, it won’t matter what your default shell is set to.
Shell to execute is not configure in
I tested with
xterm, same result, default shell is
Hello @stephaneklein ,
merely edit your
/etc/passwd file to specify the chosen shell, this is mine …
Of course you must use sudo with the editor, so in a terminal
sudo edit /etc/passwd should do it.
@jakfrost I have that :
Can we see the contents of your
% cat ~/.zshrc
# .zshrc is sourced in interactive shells.
# It should contain commands to set up aliases,
# functions, options, key bindings, etc.
autoload -U compinit
#allow tab completion in the middle of a word
## keep background processes at full speed
## restart running processes on exit
## for sharing history between zsh processes
## never ever beep ever
## automatically decide when to page a list of completions
## disable mail checking
# autoload -U colors
Note: same issue with fresh new user (I configured default shell with
chsh -s /usr/bin/zsh).
sudo usermod --shell /path/to/shell < user >
sudo lchsh < user >
Not sure if it help. Usually I just go to Gnome Terminal setting. On the left list, select the profile then on the top right tab, select “Command”. Select “Run a custom command instead of my shell” then type
zsh and reopen the terminal.
Thanks, I know, but this not fix really the issue, I would like default zsh everywhere:
Incase you missed to try what @grumpey suggested above.
If it not work, may be you also want to try by creating clean new user and change the default shell again in case something in dot file preventing to change the shell default. After that logout and login again.
How was zsh installed?. On my default fedora 35 workstation install zsh is not installed. It seems possible something needed for zsh to work is not installed thus the shell does not activate.
If it makes any difference I note you appear to be on silverblue so that could be a factor as well.
In such a case, please refer to this thread:
However, it does not look like it’s Silverblue in the OP’s case since
chsh is not installed in Silverblue (by default) the last time I checked.
This thread is tagged as feodra-linux-35 & silverblue and the OP has not said which is actually in use. I guessed at the most restrictive, and noted that fedora 35 workstation does not install zsh by default.
I’m not sure that you are having the same problem that I did, but please see my reply to this question:
I have tested with both commands presented by @grumpey, on my Silverblue system, and they both change my default shell as I intend. The only other thing I could note is that if you don’t specify a user for the
lchsh command it defaults to the root user and will assign the default for that (usually /bin/bash). Another thing of note may be that your install of ZSH is somehow broken, when you layered it onto Silverblue, were there errors given at the time?
I suggest a log out - log in after trying to change the shell.