bash or fish for shell?


Staff member
Oct 27, 2011
Reaction score
I've used bash for the past 20 years or so for my go-to shell because it's the default shell on most linux distributions - at least the ones i've used professionally for work. I wanted to make sure whatever I did on my workstation, i'd be able to mimic across the farm.

Lately, since I now do most work from my laptop/shell, i've been looking around and am trying the fish shell - I admit mostly because of the cool shawdow tab completion feature.. but it seems kind of buggy/sketchy? If I tab complete, it seems to also hit enter sometimes which could be very bad in a production environment.

I'm runing xubuntu on a macbook air.

I switched on my laptop some time ago to Zshell. There are some advantages with the tab completion but also many different behaviors of the shell. For example "sudo !!" does not work genuinely and with the work around it needs an additional enter to exec the command as sudo. Used to bash I enter usually the sudo password when there's still "sudo <command>" in the prompt. Another thing is, when i press arrow up and entered for example "a", it doesnt go to the previous command but searches for the previous command starting with "a".

Also it feels for me like all those features tend to lead to easier misconfiguration and make the adoption of some bash tutorials more challenging.

I don't want to internalize this differences as that would cause just confusion for me on the 90% bash-installations where the benefits stay on my single zshell laptop. So I guess I will switch back and give bash-it a try.
  • Like
Reactions: Rob
Jupp, now bash again. ZSH began to drive me mad. Every time I logged into the console some environment variables where wrong like $ZSH pointed to / instead ~./ which resulted and of course the modules didnt get loaded. SSH Agent depends also on some unknown constant and refuses sometimes to save creds and autocompletion doesnt work neither properly. Having spent already hours just for such shenanigans I had enough. I want features to save time and improve usability and not for the single purpose to repair them again and over again...
Zsh is a great shell that can integrate some of the fish functionalities (zsh-autosuggestions, zsh-syntax-highlighting) that can be integrated in the .zshrc with almost unlimited possibilities of customization.

This is my configuration (I'm working to integrate the plugins in the main config file):

I've messed around with several different shells - fish, csh, zsh, yash, dash etc.
But I always end up going back to bash.

Same here. Did use ksh for a few years.
I find this thread interesting because I have read various blog posts over the years touting the virtues of this shell or that shell over some other shell.
I always wondered if there was a compelling reason to switch. Apparently not.
Perhaps it all depends on a specific use case scenario?
I actually just installed fish shell to see how different it is from bash. It seems to have quite a few features which bash doesn't have. My first impression is that it could be a good candidate to replace my current default bash shell but only for using it as an interactive shell. What made you go back to bash after trying fish for a while?
The only thing I dislike about fish is that it's not posix compliant. I actually thought out that it shouldn't matter because when writing a shell script it will be bash I can either use a shebang or temporarily switch over to a bash shell while scripting. I read that zsh is posix compliant so I'm going to try out zsh as well and see how much effort it will take to get the same functions working in zsh that I have in fish.
After having played around with zsh as well, I came to the conclusion that I prefer working with a shell that is posix compliant because I found out that there are quite a few more things that work differently in fish. I have my zsh configured with plugins so that it has the same features and functionality that I liked about fish.
I ended up liking zsh better because it is posix compliant and it was kind of getting annoying how fish is not and reacts so different than what you are used to with a posix compliant shell. I was able to configure zsh with the exact same functions using plugins as the functions fish shell has. I actually think that's the power of zsh, you can configure it how you like. So when another new fish feature comes out and someone writes a plugin for it you can choose to add it or not to add it, and I find zsh more configurable then fish. I guess fish gives a better experience out of the box and zsh is more for those who just want something to work without needing to tweak it themselves.
All good points @f33dm3bits - I only do a fraction of work on my laptop and will spend 70% of the time in other servers throughout the day at work so I figured it's just best to stick with the same shell on everything. I'll be in bash on everything else, so bash it is on my laptop :)
All good points @f33dm3bits - I only do a fraction of work on my laptop and will spend 70% of the time in other servers throughout the day at work so I figured it's just best to stick with the same shell on everything. I'll be in bash on everything else, so bash it is on my laptop :)
I work on remote systems mostly too, at work we have the systems configured so that you can either login with the normal root user or an alternative root user, with the normal root user you get the bash login shell and with the alternative root user you get zsh as your login shell. In remote systems I don't need al the extra functions from the plugins but the zsh provides some more configurable options than bash as far as I am aware of. So only on my desktop I have the plugins installed that give my shell the extra functions that fish has. It's also a really good shell to work with as an interactive shell, but all scripting is still bash but bash scripts can run in zsh with no problems and you use the shebang in script so it don't matter :)
Last edited:

Members online

Latest posts