Hacker News new | past | comments | ask | show | jobs | submit login
Fish shell announces 4.0 release (lwn.net)
65 points by askl 4 months ago | hide | past | favorite | 16 comments



It's the first beta. There is time before it even makes into rolling distros.

The initial reception is good though. Works the same as before which is great for a full rewrite.


I love their tag line,

> Finally, a command line shell for the 90s

This does feel appropriate for how decidedly unmodern sh, bash, and the like are.

They don't miss the mark with their brand of humor in the 4.0 release notes,

> embrace modern computing [1]

> [1] Zip disks, Sound Blaster cards, etc.


I'll take this moment to point out that the PowerShell feels like a modern shell and is open source https://github.com/PowerShell/PowerShell (MIT license). If you want something more modern give it a try. Native support for JSON and XML and parallel streams.

That said, I'm glad to see another major release of Fish because it's for having option that we get evolution. Also very exciting to see it was rewritten in Rust! That might make it a good choice for containers that need a shell but want to harden further.


People often like to point out that PowerShell is multi platform and runs on Linux. When I looked more into this a few years ago that was a very deceptive statement because while it runs on other platforms only the basic commands to make it work ran and about 80% of the functions were Windows only. Has any of this changed recently?


I always avoided powershell, because it used to have a loading time that is longer than a second even on a modern system. But after your post I thought I give it a try.

The first thing you encounter is a .tar.gz file that does not extract into its own subdirectory. Instead it pollutes the current directory with 273 different files, which is just plain incompetent.

Then, the pwsh executable is not marked as executable, so you have to manually chmod +x on it which is just stupid.

Finally, pwsh has a loading time of 273ms for its 70 MB "bundle", which is okay I guess, but imagine running your scripts with that overhead. fish has 32ms on my system, and plain old bash 4ms.


Yes, start up time can be up to second or more. I usually start a terminal on boot an keep it around.

I can’t save I’ve manually installed PowerShell ever so I cannot comment about that.

The time savings is when I need to write a script. ?{} is so much more powerful than grep since it takes code as the predicate instead of just a regular expression.

The never having to use “cut” to extract information is priceless. Just being able to use fields.


Fish is such a great shell. More often than not it reads my mind about what to do (e.g. with its fantastic history autocomplete), but I’m really excited for this minor breaking change note:

> alt-left and alt-right will now move by one argument (which may contain quoted spaces), not just one word like ctrl-left and ctrl-right do.


If there was a good headline on here to drop in the “Written in Rust” slug, this would be it.



One thing that holds me back from using FISH is the inability to declare variables at the CLI.

I.E. VAR1=test echo $VAR1


Yes you can, I just tested it in version 3.7.1.


Thats awesome to hear. thank-you


You mean "set VAR1 test"? Isn't that the same? Or you specifically want the other syntax?

Edit: just realized you meant env variables... Yeah, this is one thing I also miss, but definitely still prefer fish personally.


this fails in bash too, no?


No.


Var1=test echo $var1 will fail unless you are using an external echo command, which is unlikely

the bash builtin echo will fail to see var1 because this declaration at the command level only affects subshells

So yes.




Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: