I literally do not notice any difference. If the folders and such get the pretty colors and tab works, I could give a damn.
Default zsh is just bash, you need to add all the fancy plugins to get it to do cool stuff
fish is for people who don’t want to spend the time setting it all up and to just get a shell that has most of the QoL fetaures builtin.
But I’m a compliant little bitch for POSIX daddy
So write all your scripts in POSIX compliant bash and use the proper shebang?
Me hitting tab on any shell that isn’t fish
“What the hell was that I ran the other day?”
start typing, ctrl+right, up, up, up, up, up, up
“Gotcha, bastard!”
right, enter
zsh > bash
Brave stand, I will stand side by side with you until the first signs of mild resistance or mockery from the world!
using friend’s computer
open terminal
it’s actually windows
Search for whatever passes for a terminal in microslop machine
Top result is Terminal from 2018
As far as I can tell it is some kind of action thriller movie?
0/10 garbage experience
Movie was terrible also
It’s actually windows
It’s actually not Unix-like.
I have never really ever used bash and thought, "Man, I wish my shell was better . . . ". Using ctrl+r to recall past commands, using sudo !! to fix missing permissions and writing small bash scripts all work very well.
That being said, if you use anything else, and you like it, I’m happy for you, but I do wonder, what leads people to other shells? What problems do they have with bash?
I script everything in bash, but for everyday use
fishjust has some modern QoL things that make it easier to get around. For me, specifically, it’s the way you can recall commands by seeing a ghost version of your history, as you type. You can even scroll through a filtered history if you’re part-way through typing some long command that matches what you have typed.Another neat thing, it does it’s best to predict what I want to type and remembers common locations, showing them as ghost text as well.
alias fuck='sudo !!'is probably the best thing I’ve ever added to my profileThere’s also this
To me, it genuinely makes a huge difference that I don’t have to manually press Ctrl+R for history search. Because 9 times out of 10, I accept a history suggestion from Fish where I did not think about whether it would be in my history.
This includes really mundane commands, like
cd some/deeply/nested/path/. You would not believe, how often I want tocdinto the same directory.
But I’ve also had it where I started typing a complicateddocker runcommand and Fish suggests the exact command I want to write, because apparently I already ran that exact command months ago and simply forgot.I used bash for 20 years and, while I obviously knew that there were alternatives, it never seemed necessary to switch. Tried fish on a whim a few months ago and I will never go back.
i use bash but i also use atuin which makes shell history so much neater. that’s about the only convenience i need in a terminal shell.
This is bait.
And I’m ready to
fishIt’s time for a
nushellCurrently using
zshbut I installedfishyesterday to try it out because I’m thinking of switching. All thezshplugins I have are basically just replicating whatfishhas by default anyway and fish might do it better.Plus, look at your name!
Just whatever you do, don’t
ln -s /bin/fish /bin/sh
what’s fish got? I’m liking zsh here but am always open to a distraction instead of getting work done. :)
Lovely OOTB defaults. I basically change nothing except the theme.
Autocomplete, git context, etc. The QOL stuff you’d expect.
does fish have fuzzy reverse hostory search?
Looks like that is indeed the default option
oh interesting. will give it a shot. basically sounds like zsh plus omz?
The main differentiator of fish over everything else is it prioritizes intuitive behavior over backwards compatibility.
Zsh is to bash as c++ is to c. Most bash scripts and habits will work in zsh, but zsh is just more convenient and has more options. Fish is intentionally different.
Do I wish fish had existed instead of bash so we had a nicer terminal experience? On the whole, yes. But I also couldn’t be bothered to learn another shell where most of the instructions online won’t be able to help you, and I ended up sticking with zsh.
This is a good way of putting it. It’s essentially ZSH with Autosuggest/complete and a theming agent. At least visual-wise.
When you get into the scripting and the hot keys aspect of it, they reinvent the wheel and everything is different., Like for example ,!! and other bangs(I think that’s the right word?) like that are not valid on fish, And everything to do with variables is different from adding to your path to setting variables to creating functions. Also checking your error code is going to be different as well as it doesn’t follow the $x style inputs and doesn’t support IFS and globbing works differently.
TLDR; fish is nice, but If you use it unless you want to relearn an entire type of language, keep your scripts on bash or zsh
or if you wanna see the bigger differences fish has a dedicated bash transition page
thanks for the detail!!
Yup, very similar! And quite customizable as well if you want to. But the focus is on having, by default, a friendly interactive shell.
I like that I can spin up a VM, install fish,
chshand I’m all set.
I jumped from bash to fish because cachy os has it as default. I kinda don’t like it, it’s a little too fancy, but it’s not bad enough for me to bother switching the default to bash. So I’m using it. Still not quite liking it but maybe it’s growing on me.
Fish is great if you can’t remember a specific command, or don’t want to type out long filenames/locations, but I dunno if I’d use it as the default.
I just type “fish” in the terminal if I ever run into a situation where I might get some use from it.
I used to do that, until I realized I never had a usecase for plain bash over fish
I have that occasionally when I want to copy a complex bash command from somewhere. But yeah, I can then just run
bash, run the command in there and thenexitback out of there.that’s what bass is for
I’m guessing, you mean this then: https://github.com/edc/bass
But well, I was rather thinking of when it’s using Bash-scripting-syntax to combine multiple commands.
Like, maybe there’s a for-loop in there. You just can’t paste that directly into Fish and have it work. Granted, you should probably put that into a script file, even if you’re using Bash, but yeah, just temporarily launchingbashis also an option.
Usually I just use bash it’s definitely good enough. I’ve tried zsh and fish, I definitely prefer fish
Oh yay, more tribalism.
I am a pureblood and do all the computing I need in my head.
Yay? Everybody knows you should use paru! /s
lmfao beautifully executed
Am I out of the loop? what’s wrong with zsh?
It’s better.
RMS doesn’t approve
They asked what’s wrong
Classic linux tribalism. Use what you like and don’t get involved with these confrontational nerds.
I mean, there’s some things that became validly toxic due to their developers, example off the top of my head: Reiserfs
True, software can call you a slur.
It can when I write it.
Or kill your mail order Russian wife.
wat?
Inserts joke about it being weird that it happened twice
There doesn’t have to be tribalism, people just need to accept that systemd is a botnet
It’s permissively-licensed (as opposed to bash, which is GPLv3). Pushing zsh over bash is part of a larger effort by corporations to marginalize copyleft so they can more easily exploit Free Software at the users’ expense. Don’t fall for it!
Come one, free software aside bash UX is terrible. Not everything is a conspiracy.
fish, the main modern alternative to zsh + oh-my-zsh, is mostly GPLv2, and you can redistribute it and/or modify it under the terms of the GNU GPL as published by the Free Software Foundation.
It’s such a shame that, if zsh gains enough critical mass, all copies of its source code will be deleted from the universe and no-one will be able to use it without paying any more.
It’s such a shame that you can’t customize the version of zsh running on your Linux-based embedded device because it’s DRM’d to prevent the modified version from being installed.
…oh wait, that’s not sarcasm because it’s actually plausible.
Shit I didn’t know this was a problem. What devices are these? I’m assuming we’ve got a few in every home?
It’s called tivoization and started with a device called “Tivo” which was the first of its kind to attempt this procedure.
There are probably lots of hardware devices in your house that use GPL software but prevent you from actually modifying it because the hardware will refuse to run modified copies. If a piece of software is licensed GPLv3, it would violate the license terms to do something like this.
Yes but we’re talking about zsh. I know zsh wasn’t on TiVo.
Cool.
And what, exactly, is the path from “pushing back on zsh” to “embedded device manufacturers can no longer lock down their devices?”
A plausible path is precedent and normalization, not zsh specifically.
If a widely used copyleft component (like a shell) starts being accepted as “OK to lock down” in consumer or embedded devices, manufacturers and courts get comfortable with the idea that user-modifiable software is optional rather than a right tied to distribution. Over time, that erodes enforcement of anti-tivoization principles and weakens the practical force of copyleft licenses across the stack.
Once that norm shifts, vendors can apply the same logic to kernels, drivers, bootloaders, and userland as a whole—at which point locked-down embedded devices stop being the exception and become the default, even when the software is nominally open source.
I don’t understand. It’s already ok to “lock down” devices, from the point of view of most consumers and the courts, regardless of the software license. Phones make it hard for you to flash new firmware onto them. That is still true with android and the open source components in its stack.
Using bsd licensed software in every day life cannot accelerate that because it has already happened, and I don’t see how it would be otherwise, because software licensing doesn’t protect against the kind of locking down you’re talking about.
Same as systemd, PipeWire, Wayland, Flatpak… basically, it’s new therefore it is bad.
Foss traditionalism im guessing.
It’s stinky and smelly and smells bad.
Unrelated to the topic: How did you make your username red?
I didn’t, depending on your client it might be how it signifies instance admins
Thx.
It makes people vomit.
I never tried anything other than bash tbh. Not sure if i should. I never really looked into what i might be missing out on with a different shell. Bash just works so i never felt like messing around with it.
If you ever used ubuntu, then you’ve used dash
fish is worth trying. saves alot of typing
/bin/bash and move on with your life.
Linux noob here. Can you explain please why I‘d use a different terminal than what my distro provides (bash)?
I would really recommend you try fish.
It has a lot of nice autocomplete features and handles functions much better than bash. It has a very sensible autoconfig so you can just install and try it.
Zsh can be configured in quite a lot of ways. It’s default config is quite similar to bash.
What does it autocomplete? Filenames? Bash can do that too, right? I just hit the tab key and it’s written there.
And with functions you mean in scripts? How does it handle functions better?
Autocompletions in fish also take history into account, which saves you a lot of typing in the long run.
Fish shell script is much more sensibly constructed than bash so it’s just much easier to write a script in fish.
Thank you for explaining
Fish was amazing when I first discovered it, but I found it had too many problems for me to effectively use it. Having to adapt existing bash/zsh scripts was a major problem for me.
So I went the other way around and managed to get all of the Fish features I wanted working under zsh using atuin, starship, and other misc. oh-my-zsh plugins to fill the gaps.
Best part: I used a git-controlled home-manager setup to do it so I can activate my entire environment on a fresh machine/server in minutes after I clone it.
Features and default settings, but its really just about preference. They are all good at what they do.
Also im only saying this because it confused me for so long, but shell and terminal are different parts of the same thing. Bash is your shell, its the backend that runs everything you type into your terminal. My computer for example uses my kitty terminal which communicates in bash. You can change both the shell and terminal. Zsh is another shell, so it would change the “shell language” you use to communicate with your terminal.
There can be a ton of reasons, albeit I personally also just stick with default (for me zsh). In typical linux user fashion I also must tell you that bash and zsh are shells, not terminals.
The two main reasons you’d choose a particular shell is because you prefer it’s configurability or syntax. Zsh has a bunch of features that you can enable and you can configure it to behave basically however you want, like adding spelling correction or multiline editing, but it’s defaults absolutely suck unless your distro comes with a sensible config. Fish, which another guy here’s raved about, goes in basically the opposite direction and is really nice to use out of the box (I haven’t used it though). I hear it’s technically not a valid
/bin/shsubstitute like zsh or bash because of syntactic differences, but that’d be a whole other rabbit hole if true.One other reason can be performance concerns because bash is pretty slow when treated as a programming language, but I’d argue you shouldn’t organize your workflow so that bash is a performance bottleneck.
I switched from bash to zsh a while ago, mostly just for shits and giggles. I really can’t see any reason to form a strong opinion on it one way or the other.
Zsh is but more for interactivity. The extended file globbing, extended auto completion, and loadable modules are the main reasons I like it. The features really shine when used with a configuration framework like ohmyzsh.
Supposedly, Zsh has a more comprehensive shell scripting syntax, but that’s not a plus since I don’t want to write shell scripts.
Bash is copyleft (GPLv3). Zsh is permissively-licensed.
Apple, for instance, switched from bash to zsh when the GPL version upgraded because they wanted to withhold those rights from their users.
Zsh should be considered harmful as a tool of corporate encroachment and subjugation of Free Software.
Calm down RMS, you’re going to have another episode.
His episodes are just him being right over and over and us refusing to listen
He is always right.
Except for that one time.
He should be awarded a prize for services to womens’ horticulture, given the number of women at MIT who filled their offices with houseplants just to keep him away.
Well and also eating his own feet
Removed by mod
Removed by mod
Removed by mod
Removed by mod
If you wanna try something different, give nushell a try. It’s like magic to me.
I went from bash to fish to zsh. I can see why people would like having fish as a shell. but I hated scripting on it and if I’m going to be triggering a different shell for scripts anyway, I might as well skip the middleman, not re-invent the wheel and just use zsh with plug-ins that way I only have two shells installed instead of three. Adding the auto-complete plugin and a theme plugin for zsh gives most of fishes base functionality and design while making it so I don’t nerd to worry about compatibility.
Maybe someday when I’m less code oriented, I will re-look at fish, but I don’t see it happening in the foreseeable future.
I don’t have an opinion either but you could try using Starship on top of ZSH:
It’s supposedly lighter than OhMyZSH with the same features.
Starship is also available with other shells, and even Powershell which is nice because having the same tool everywhere is always better.
I don’t mind /bin/zsh.
Now Oh My Zsh! on the other hand can die in a hole.























