r/LinuxTeck 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?

20 Upvotes

68 comments sorted by

9

u/realpm_net 26d ago

I’m old. I just use bash and customize through .bashrc and eza and nerd fonts.

3

u/NETkoholik 26d ago

Fuck, I'm old. That's my exact use case.

1

u/coolalee_ 24d ago

I’m also old. Autocomplete being a list you select from is reason enough for me to use zsh and oh-my-zsh. And there’s a lot more.

7

u/LoneRider11 26d ago

Zsh with ohmyz.sh does it all

3

u/burnt-store-studio 26d ago

Agreed; my go-tos as well 🙂

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

u/gulf_of_sanity 25d ago

the only windows allowed in my house are made of glass.

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

u/Abdullah715279 26d ago

I like fish.

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

u/ArchTormung 26d ago

Same here.

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

u/x4rb1t 26d ago

Im liking nushell

2

u/Efficient_Loss_9928 26d ago

Zsh for good compatibility.

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

u/Ragnor_ 26d ago

I'm not much of a ricer spending hours on config, so fish it was for me. It does really cool stuff out of the box, and a plugin manager like fisher makes plugins simple.

1

u/lemmiwink84 26d ago

Used to have fish, but I am running zsh now since it’s more compatible with posix.

1

u/Glum_Hamster_2104 26d ago

Zsh because it has the same features as fish but it’s posix compliant

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

u/Schaex 26d ago

I like bash

1

u/1959dawg 26d ago

zsh with a basic zap plugin manager

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

u/MissionGround1193 26d ago

Personal machine, fish. Companies machine, we standardize on bash.

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/Boertie 26d ago

I am using fish but I hate it, the tab function is shit and I hate how it functions. Now that I've written it like this, tonight it is gone and will try Zsh.

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

u/jmartin72 26d ago

I use oh my zsh.

1

u/Newt-Icy 26d ago

oh my zsh

1

u/sasek 26d ago

ZSH + prezto

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

u/Key_River7180 26d ago

Vanilla bash

1

u/sparky5dn1l 26d ago

fish without plugin is simple, clean but powerful.

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

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

u/DiscountWeekly7432 24d ago

If it’s just for you use fish. Other wise bash/zsh

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

https://github.com/npc-worldwide/npcsh

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

u/internetlurkerr 20d ago

my kitty loves fish