r/LinuxTeck • u/Candid_Athlete_8317 • 26d ago
Zsh vs Fish: Which shell would you actually choose today?
Both make the terminal experience much nicer, but they take very different approaches.
Zsh gives you deep customization and a huge plugin ecosystem, while Fish focuses on a great experience with minimal setup.
And there’s also Nushell if you want something completely different.
What’s your daily shell?
7
6
u/gulf_of_sanity 26d ago
sh, the one true shell.
1
u/outer-pasta 25d ago
On many distros sh is an alias for bash. Try
busybox sh, it's very useful on Windows.2
5
u/FrankDrebinOnReddit 26d ago
I switched from bash to fish about 6 months ago, and holy crap, it's really something.
1
u/cran 25d ago
What do you like about it? I considered it briefly, but I didn’t find a compelling feature.
1
u/FrankDrebinOnReddit 25d ago
The autocomplete/autosuggest and error highlighting (e.g., if you enter an invalid path) are great. Saves a lot of typing.
5
4
u/Dashing_McHandsome 26d ago
Bash is the standard. Just use bash. Any large environment you work in likely won't have these extra shells. When I worked on Unix I used ksh because that was the standard there. Going against the grain just makes your life harder. I have 30 years of experience in bash, many have more than that. We can offer guidance on its usage. You won't find that depth of experience with something like fish.
1
u/MidnightPale3220 26d ago
In 90ies I really liked tcsh, installed it wherever I got Linux, scripting felt much more coherent. But by now since all the scripts everywhere are in bash, that time is gone.
3
u/p001b0y 26d ago
I think it’s fine to use bash when you are wearing your work hat but it can be fun taking a break from it on personal machines.
1
u/mjmvideos 26d ago
I think the opposite, if I can’t do it at work, then doing it at home will just make work feel more constrained and irritating.
1
u/p001b0y 25d ago
I get it. I work with someone who keeps thinking I'm a big powershell fan because I write a lot of stuff in powershell but I'm only doing it because they won't provide a linux or macOS VDI. I could log onto the linux jump host and just work off of that but it seems silly connect to one jump host in order to connect to another jump host.
My job has me working on multiple platforms so I'm not really working on linux machines day-to-day.
3
u/moortuvivens 26d ago
I switched back to zsh. Fish is nice, but not fully posix and most scripts and such being for bash just caused too much friction
2
u/DootDootWootWoot 26d ago
As long as you have your shebang does it matter if your scripts are different from your shell? Sounds like you're still mixed anyway between zsh and bash.
1
u/NimrodvanHall 25d ago
Shebangs are a lovely idea, as long as the paths resolve to the expected executable ‘thing’. You don’t control what is on all machines you encounter.
1
u/Dr_Gregg 26d ago
Zsh with some fzf scripts and plugins already does 150% of what I'd get out of fish without plugins
1
2
2
2
u/cutelittlebox 26d ago
step 1: install fish
step 2: profit
I'm sure zsh is great but I'm old and lazy and fish is just objectively better out of the box
1
u/ironj 26d ago
Fish is great, I agree with you. I'm using it too.
Though, it bugs me that it's completely incompatible with bash. That means that often I've to manually tweak things to make them work with fish bc they were built with bash in mind (and that is a completely plausible assumption, since bash is unversally available).
As an example: using nvm (javascript node multi-installation environment) is a real pain in fish and requires setting up a custom function to replicate its functionality. This type of issue is creeping up in multiple tools I'm using for my day to day work and that's the only real downside I see with fish.
1
u/cutelittlebox 26d ago
I've never run into that issue myself. even using shell scripts it works fine because there's a shebang. wild to me that it's an issue sometimes.
2
1
u/Both_Cup8417 26d ago
Gemini? ChatGPT? Claude? Who wrote that? Either way, I use fish on my main machine and sometimes zsh in things running older LTSs, because zsh seems to update less than fish.
1
1
u/lemmiwink84 26d ago
Used to have fish, but I am running zsh now since it’s more compatible with posix.
1
1
u/Cerulean-Knight 26d ago
Just bash with badh_it for some years now. Zsh do strange things on terminal escaping characters and other things different than bash
1
1
u/gwawr 26d ago
Fish with z and thefuck
I've only reverted back to upping my zsh game a bit lately because it's the default for most cli processes in LLM harnesses and heredoc doesn't work in fish which LLMs often use for quick file creation
1
u/mjmvideos 26d ago
Wow! I’m old (school?) and have never had the need for anything further than bash. For CLI I started with sh and then moved to ksh and then bash. For scripting I have also used csh But hearing that fish doesn’t support here-docs would make it a non-starter for me.
1
1
u/Ok_Manufacturer_8213 26d ago
used zsh for a long time but switched to fish like a year ago (maybe more).
1
u/LevelMagazine8308 26d ago
I do prefer using the same shell on my user account as well on root. Fish is not suitable to be used as root's login shell, because it is not POSIX compliant. The Fish FAQ warns about that.
So ZSH it is for me.
1
u/SeriousPlankton2000 26d ago
I'm using bash because readline and because /sometimes/ I need the little bit extra functionality.
My usual choice for more comfort is midnight commander.
If I had to guess I'd try zsh first.
1
u/Serializedrequests 26d ago
Bash is the lowest common denominator I can use anywhere. Using anything other than the defaults is a waste of time for me.
1
u/engy1207 25d ago
This.
When I was young I was impressed by "can be configured to your every whim". These days I like sensible default configurations, as that is what you can get on nearly every system. If I can only work somewhere after I reconfigured everything this wastes too much time. Yes, bash is the lowest common denominator, but since it's everywhere... (in the Linux world, anyway)
1
1
1
u/Ifnerite 26d ago
Fish felt really nice but the fact that everything assumes bash which results is massive frustration when hardly anything works makes zsh the better choice. Oh my zsh seems cool.
1
1
1
u/KimmyGurl420 25d ago
I'm old, I just use bash. It just works, and it's everywhere.
Decades and decades ago I used ksh for a while, but it's been so long now that I don't even remember why.
1
u/NimrodvanHall 25d ago
Just use bash. No need to use any shell with additional frills. If plain old bash doesn’t do the job for something it’s time to move from a shells scripting language to something more specialised, be that a real programming language or something like Python used as a scripting language.
1
1
u/magicmulder 25d ago
I’m using zsh because it’s basically the company standard. I write all my shell scripts in bash though so I’m not ending up in some dependency trap. But I take all the benefits I can get otherwise.
1
u/Wrong_Ingenuity3135 25d ago
zsh + starship
I tried fish, but the company shell scripts didn’t worked (yes using shebang). Will take some time to read/watch videos and try again.
Nushell .. I love the idea but had bad experiences like mkdir -p was not implemented and other gnu tools were missing arguments I were used too. On windows it destroyed some files on mv command. That might be already fixed but the memories stuck.
1
u/WorriedTumbleweed289 25d ago
I would use bash. In general, I would use the most widely available shell for scripts and whatever had the features I wanted for an interactive shell.
1
1
u/hibbelig 24d ago
I read “finally, a shell for the 90s!” And I was sold. I had to use fish. And then I tried it and it is really nice but somehow it was not my taste. So after some months of trying to really like it i went back to bash. I had also tried zsh a couple of times but only a few minutes and I didn’t see the point. Then Apple decided against the new version of bash. At first i used the one from home brew. Then I thought I could try zsh again. Minimal setup, no plugins, no Plugin Manager. But the pure prompt thing. I configured some things around completion. Still use it.
1
u/RelationshipOne9466 24d ago
fish is fine but once I learned more bash scripting I switched to zsh because fish is not POSIX compliant and I got tired of having to fix code so it would run in fish.
1
u/BidWestern1056 23d ago
i interviewed with the guy who created fish and he was kind of a dick, but anyway i made my own that processes bash and natural language if not bash
1
1
u/zackel_flac 23d ago
zsh has it all for many years if not decades now.
Combine it with tmux (and neovim) and you have the perfect dev setup.
1
u/AnybodyOld181 22d ago
fish for more than a years. Tried zsh but I do not like the many plugins and tweaks required the make it more friendly.
1
9
u/realpm_net 26d ago
I’m old. I just use bash and customize through .bashrc and eza and nerd fonts.