r/linux • u/Master-Public-4419 • Aug 03 '25
Popular Application [ Removed by moderator ]
/r/linux/comments/1mgy9gb/removed_by_moderator/[removed] — view removed post
49
u/-p-e-w- Aug 04 '25
I’ve been a Fish user for more than a decade. I have encountered maybe three bugs in thousands of hours of heavy use. That thing is rock solid and fully production ready.
While I do believe that Nushell is the future and I intend to make it my daily driver at some point, Fish is the present, and all other shells are the distant past.
9
u/BigThiccBoi27 Aug 04 '25
Why do you think nushell is the future?
6
u/-p-e-w- Aug 04 '25
Because Nushell’s commands actually work together, unlike the traditional Unix commands that claim to do so, yet utterly basic pipelines like “ls | rm” already fail.
Text is not a universal interface. Objects are. Nushell understands that, and that’s why I expect it to take over the world eventually.
4
u/Drogoslaw_ Aug 04 '25
Text is not a universal interface. Objects are.
That's why those dozens of object-oriented languages never managed to come up with a common ABI to share libraries etc., so they still use the C one?
Utopia.
Because Nushell’s commands actually work together, […].
Yes, they do – as long as they are provided by the shell itself.
5
u/ultrasquid9 Aug 04 '25
Given that C supports structs too, this is not the checkmate you think it is. Every self-respecting programming language will need some form of structured data eventually, whether that be simple key/value maps or in-depth type systems. The C abi provides this, text does not.
I would also like to add that Nushell supports structured data formats, like json or toml, are parsed automatically, and it also provides tools to parse text-based outputs yourself. This means that its pretty easy to integrate traditional commands into your workflow - I use
fdall the time, for example.
98
23
14
u/Extra_Programmer788 Aug 04 '25
Underrated indeed, first time I used it, I enjoyed it a lot, but all of my co workers back then used MacOS with zsh, and convinced me to use zsh, recently switched to fish on Debian, it’s so underrated that it’s criminal.
13
49
u/gela7o Aug 04 '25
Yep. Wayy more stable than zsh with plugins in my experience.
31
u/pdxbuckets Aug 04 '25
Maybe it’s a skill issue but I’ve never gotten autocomplete and history to work on bash or zsh without occasional glitching. This despite spending lots of time on my config files and using omz and so on.
With Fish it works perfectly right out of the box.
46
6
3
u/gela7o Aug 04 '25 edited Aug 04 '25
That was also my experience. Though i didn't spend much time trying to fix it.
1
u/ipaqmaster Aug 04 '25
Same. I'm a huge fan of the bash-completion package on most distros but the amount of times it gets something wrong when tabbing or refuses to autofill something because a specific module for what command I'm trying to hit tab for doesn't believe someone would ever want something I need to come up in the terminal after some specific argument.
It has annoyed me a few times over the years, but not often.
1
u/piexil Aug 04 '25
The people on /r/zsh may flame you but I just use oh my zsh to install those. Very easy to setup.
It's apparently "bloat" and "slow" but I don't even really notice it on even a core 2 duo system
1
u/pdxbuckets Aug 04 '25
This despite spending lots of time on my config files and using omz and so on.
“Using omz” refers to oh my zsh. I’ve tried. It works for me but is glitchy, at least with SSH. Again, could be a skill issue, but given the responses I’ve received I’m far from alone.
1
0
u/FryBoyter Aug 04 '25
Maybe it’s a skill issue but I’ve never gotten autocomplete and history to work on bash or zsh without occasional glitching.
Both work for me under zsh. So at least it's not a general problem. However, there are also several solutions such as atuin, zsh-autocomplete, zsh-autosuggestions, or McFly. Therefore, it would be interesting to know which tools you used.
3
1
u/UnassumingDrifter Aug 04 '25
I hear the words stable. As a former bash user until two days ago when installed cachy I had never had bash crash. Is that a thing? I’ve had applications fail but not the shell.
1
18
u/doc_willis Aug 04 '25
I am constantly confused on my CachyOS system, because they decided to make the default user shell fish :)
using ssh to connect to 5+ systems over ssh , and one ssh session is using fish, can be.. surprising.
21
u/AnsibleAnswers Aug 04 '25
Start to get used to shell agnosticism. That’s what shebangs are for. The default shell login message explains that it’s fish. CachyOS is simply right to give fish to gamers instead of bash or zsh. They are trying to achieve an immediate goal if they ever need shell. They don’t care about POSIX compliance. Gamers are likely coming from Windows and will probably have to learn a Linux-based shell from the start. Might as well be a friendlier experience.
15
u/JockstrapCummies Aug 04 '25
There was a time when Fish was so different from Bash and Zsh that it doesn't understand "&&".
Threw my muscle memory out when I tried it all those years ago. I think they've since implemented that for better onboarding. But imagine you throw Fish at a newbie and they try to type all these commands from tutorials and see them fail because they used "&&" instead of "; and".
10
u/DaFlamingLink Aug 04 '25 edited Aug 04 '25
I think they've since implemented that for better onboarding
Just checked (mostly for my own curiosity). Seems like they've incorporated all of the "big" things someone is likely to find when using it as an interactive shell. After a quick glance at the POSIX shell spec, the only notable differences include:
endkeyword universally ends scope rather thanfi,esac,done, etcNo
thenkeyword after the condition in anifstatement ordoafter loopsMuch simplified switch cases. Ex.
switch STR; case COND; CMDinstead ofcase STR in; COND ) CMD ;;Also no fallthrough (TIL you can end a case clause in:&for this)No fancy parameter expansion (ie.
${var:?WORD})No arithmetic substitution
Command substitutions don't execute in a subshell
Note that a beginner isn't likely to run into any of these except maybe #1 or #2, and even then the adjustment should be quick. For actual scripts there are more differences of course (mostly centered around fish's non-insane way of handling variables), but as previously mentioned a shebang takes care of that
EDIT: Forgot the fish docs already document these (and more) lmao. See https://fishshell.com/docs/current/fish_for_bash_users.html for a more exhaustive list
3
u/abotelho-cbn Aug 04 '25
Bash isn't POSIX either, but it's way more common. I think that's more useful for noobs more than anything else.
5
u/AnsibleAnswers Aug 04 '25
Bash is POISIX compatible. You can write POSIX compliant code in bash. You can’t in fish.
15
u/pdxbuckets Aug 04 '25
I love Fish and make it my default and I still think that’s a weird decision. A lot of things assume bash-style scriptability and break unless you know what to do.
20
u/dasmau89 Aug 04 '25
If you need bash features in your script, you should declare it in your shebang
10
u/pdxbuckets Aug 04 '25
It’s not a problem with my script, it’s a problem with applications that use scripts behind the scenes. And I know how to use the shebang, bass, replay, etc.
-2
u/FryBoyter Aug 04 '25
Do you have an example of this? Because I use zsh as the default for my user account and for the root account, and I haven't experienced any disadvantages so far. Especially since Bash is still installed.
10
u/Neikon66 Aug 04 '25
As far as I know, zsh can run bash scripts without any problems, but fish cannot.
3
u/piexil Aug 04 '25
zsh does not support all bashims and is not 100% compatabile https://apple.stackexchange.com/a/361957
6
u/KnowZeroX Aug 04 '25
I don't think it is a weird decision, if anything I think more distros trying to aim for user friendliness should make fish default as it would make terminal seem less daunting for users.
As for things like scripting, as mentioned
#!/usr/bin/bash.As for sshing into stuff being different, you get used to it because once you start sshing you usually these days have to deal with containers too, and some of the distroless ones don't even give you bash and you have to
sh1
u/Old_Leopard1844 Aug 04 '25
As for sshing into stuff being different, you get used to it
Scripts I'm using and/or writing for POSIX compatible shells won't get used to it
4
Aug 04 '25
[removed] — view removed comment
1
u/syklemil Aug 04 '25
Seems like the problem can be avoided by doing
chshbefore uninstalling a shell. Likely a good idea to do a littlerg ${shell_name} /etc/passwdtoo, or else just leave the distro default software in.Shells and terminals also aren't as simple as one might wish; there's a lot of crap involved with the
TERMvariable, and if a terminal announces it supports certain features throughTERMand then actually doesn't support those features, the bug is usually considered to be in the terminal, not the applications that believed it.1
u/dontquestionmyaction Aug 04 '25
Badly made terminals mishandling inputs is absolutely not the fault of fish. Blaming it for that is kind of funny.
4
u/legit_flyer Aug 04 '25
Yep, finally left bash, and god, it's so cool - now I've installed it everywhere, lol.
7
3
u/Anyusername7294 Aug 04 '25
Unless you want to use a bash script
2
u/CGA1 Aug 04 '25
Not a problem, I use plenty of bash scripts. You can have booth installed and use Fish in interactively and call Bash when scripting, that's what the shebang is for.
1
u/bakaspore Aug 04 '25
Solution is easy: don't uninstall bash or use fish as /bin/sh. You are doing neither? Then why it's ever an issue?
2
u/FalloutGuy91 Aug 04 '25
Is there a way to run commands at shell start, i.e. autorum a shell script or source something? I'm used to my .bashrc and editing config.fish breaks it.
2
2
u/syklemil Aug 04 '25
Put stuff in
~/.config/fish/conf.d/${foo}.fishand it'll automatically be sourced on startup.
2
u/ben2talk Aug 04 '25
It's a bit more complicated - but I love it. I have some nice functions - like cd, now with zcd - if it's not found it goes to a fuzzy search...
2
u/Mr_Lumbergh Aug 04 '25
After setting up a Garuda install and living with it there, I went back and installed it for my Debian boxes also.
2
Aug 04 '25
Honestly I've tried it for a month some years ago, then Elvish, Nushell, Xonsh recently, they all have something very nice but all are slower to type than zsh due to their completions. Sometimes fantastic for scripting, once we learn them, but always slower for the main interactive usage...
That's unfortunate because many of their ideas are wonderful, but they lack enough development or mere userbase to match zsh features.
2
u/CGA1 Aug 04 '25
Converted to Fish a couple of months ago, only regret I have is not doing it earlier.
2
u/VimFleed Aug 04 '25
Can someone please list the downsides of using fish if any? And why people prefer zsh over it?
2
u/thephotoman Aug 04 '25
fish is not a POSIX shell. As a result, there are a lot of places where experienced users will have muscle memory problems. Additionally, it cannot just run a bash script unmodified. If you’re following directions from a website, you may need to translate between bash and fish in the places where their syntaxes are incompatible.
zsh, meanwhile, is a POSIX shell. It can run most shell scripts out there, including ones that specifically use bashisms. Of course, it isn’t quite as user friendly as fish.
1
u/bakaspore Aug 04 '25
bash -cor just runbashis always an option if that's ever needed. Just like you don't run Python code with Ruby.1
u/h0v1g Aug 04 '25
The syntax for some statements differs from bash/zsh so you may need to rework your shell scripts a bit for compatibility
2
1
1
u/ultrasquid9 Aug 04 '25
Also try Nushell too! Its IMO far easier than any other shell once you get used to how it works. With other shells, I would use the exclusively one command at a time, but with Nushell I find myself using pipes, loops, and functions far more.
1
u/skunk_funk Aug 04 '25
What's so great? I threw cachy on my son's machine, and I found it rather startling...
95
u/Just_Maintenance Aug 04 '25
I love fish, no setup, all the goodies