Is it time to switch the default shell from bash to fish?

Hello Everyone,
about a month ago I decided to try switching from the default bash shell to the fish shell.
I did this because I have heard so much good things about it and the features are appealing.
At first, I was a little worried that the switch would take me a little while, but I did not have to adapt at all. It really is this easy if you are used to bash.
After some time, this made me wonder if we should maybe expose newcomers to an easier and more modern shell. Other projects like Kali Linux have started thinking about similar stuff and I would like to know your thoughts on this.

The arguments that I can think of are:
Pro:

  • Fish shell is very easy to use and is way easier to write scripts in
  • It gives you real time feedback on whether the command that you typed is valid which saves a lot of time
  • the autocompletion has often cut the time that I need to write a command to less than a half
  • usually same commands, so there is no time needed to adapt
  • the syntax highlighting is easier to read than bash’s default one
  • it feels more modern and competitive with stuff like powershell
  • easier configuration
  • automatic generation of man pages (the site is way better at explaining it)
  • all of the old bash scripts will still work as the bash shell will still be around and !/usr/bin/bash is declared in standard bash scripts on the top
  • still able to run bash commands just by typing bash
    you can read more about it here

Contra

  • some tutorials may not work, although this should really be an edge case

I would love if you can point out things that I missed and what you think about this.
Best Regards, Julius

4 Likes

Personally I switched Openbox to zsh years ago and I thought - but that requires a closer look at the profiles - Manjaro recently changed to zsh as well.

A lot users don’t know the difference anyway - and maybe surprised when they learn :slight_smile: and with the zsh config by @Chrysostomus zsh is a great shell.

1 Like

funny that you say that, because I actually didn’t know that manjaro changed to zsh recently XD. Must have missed these news.

I haven’t tried zsh myself, so I can’t really contribute to the conversation there.

As far as I know, it’s only the GNOME Edition that uses zsh by default. The others still use bash. :wink:

3 Likes

I was unaware that Manjaro recently changed the Shell over to ZSH from BASH. Any reason for this change?

1 Like

I’d guess (and it is a guess pn my part) that this comes from the Gnome developers rather than an explicit decision by the Manjaro team.

I have been looking at the iso-profiles and from those files it appears the following editions utilize zsh as the default shell

  • Openbox Edition
  • LXQt Edition
  • LXDE Edition
  • Gnome Edition

@Chrysostomus and your’s truly are very fond of zsh shell - expecially the extensions making the terminal far more pleasant to use.

This narrows it down to a design decision by the maintainer(s) of the edition.

The manjaro-zsh-config and zsh is available on all ISOs albeit not as the default shell.

2 Likes

that clears it up, thanks a lot

1 Like

I prefer fish. I use it everywhere I can. But I would not support making it the default shell of any Linux distribution. There are (ba)sh-isms that fish purposely does not support that I think would be missed. Scripting is also very different in fish. It is very easy for someone to change their shell, so I would argue keep the default safe and sane.

To say it slightly differently, fish is not POSIX-compliant, which may not be that big of a deal to some, but it is huge to others.

EDITed to mention POSIX-compliance.

5 Likes

out of curiosity does this zsh switch apply only to new installations or to old ones? I think I am still on bash… How would I switch to zsh with the Chrys config? TIA!

1 Like

If you want to switch your existing system to zsh:

pamac install manjaro-zsh-config
cp /etc/skel/.zshrc ~/
chsh -s /bin/zsh

5 Likes

It applies only to new installations. Systems that were installed with bash as the default shell will retain this configuration. :wink:

man chsh

:wink:

1 Like

I also like fish. That is why manjaro-zsh-config has many of the fish default settings like

  • syntax highlighting
  • autosuggestion
  • history substring search

In comparison to fish, zsh has even better tab completion and is more compatible with bash syntax.

1 Like

I just installed fish
but it wont run or open

Type fish in your terminal and you’ll be using the fish shell, notice it says fish on the top side of your window. If you want to change to tht shell every time you open your terminal use the chsh command.

I typed help and got this

:~:$ fish
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
~> help

(exo-open:13474): dbind-WARNING **: 20:36:46.238: Couldn’t register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken

That is above my paygrade unfortunately. Does zsh work?

1 Like

fish is working

many thanks

Is it time to switch the default shell from bash to fish?

No.

Manjaro already seems to be implementing a default of zsh over bash. Which, if you want my opinion, is also a bad idea.

4 Likes

Also my opinion. :wink: If it ain’t broke …

1 Like