Is there any reason to use Zsh at this point over Fish?
Also, you could do what I do: leave bash or something else as the default, and then just run fish manually.
Then if I have a problem pasting or something I run type exit.
But the incompatibilities are a lot less now.
Fish doesn't have anything like that, there are a few workaround, but none of them are (in my opinion) anywhere near as nice.
pushd /my/path && command && popd
Both in bash AND in fish! with mydir make
Although you'd want to be able to write things like with mydir make && ./bin/myprog
and parse everything to the right of `mydir' as a shell pipeline. That might be the sticking point in fish. exec bash
<paste some bash>
exec fishfish: Invalid redirection target: yq3 r <(kubectl get nodes -o yaml)
I respect the craftmanship, but if I'm more of a "software carpenter" why should I invest the time?
Immediately seeing if you misspelled a command because the color changes is a huge benefit if you're not super familiar with the command line.
The auto-complete and suggestions are also miles better than bash - they are automatically generated from man pages, so most commands have a usable set of completions.
The web-based config lets you easily tweak settings that would otherwise be an incomprehensible soup of PS1=3!@*(!@!@ gobbledygook.
Also, it mostly "just works" out of the box, so you really don't have to waste any time setting anything up if you don't really care.
I never understood this. It's always seemed worse - in bash/zsh I can tab complete branches/tags etc in git, pods/deployments etc in kubectl. I try that in fish and it'll just list files in my PWD
Though I still write my scripts as bash scripts (with shebang as the first line).
Pair that with tldr and it's a really good experience.
I found that ZSH managed with OhMyZSH plugins gets me similar functionality without the syntax incompatibilities. Unfortunately unless Fish moves back towards compatibility I don't see myself ever going back, it's just too much hassle dealing with little syntax issues all the time.
So yeah, shell scripts work exactly the same if you're running them as an executable. Some scripts, however, (like for instance .bashrc) are intended to be sourced by the shell rather than invoked as an independent executable. These won't work, and will need to be ported.
Anyway, have things to do before I can try again and dig in. Thought I'd post in case someone else ran into this.
[Edit] Tip: swap to a different shell before uninstalling your current shell. Sigh...lol
[1] https://github.com/fish-shell/fish-shell/issues/5497 [2] https://raw.githubusercontent.com/Homebrew/homebrew-core/ad5...
The fish 3.5.0 release is not responsible for my tmux issue. False alarm.
Downgrading did somehow help me regain shell interaction, but I can't create a new session/pane, etc.
I think something else broke my tmux setup during the brew upgrade, or possibly even before it.
tmux.conf [1]
[1] https://gist.github.com/alexpw/7d406734f912f835d705066de8286...
Yes! This has been annoying with curl for a long time.
(I'm a fish developer)
> archlinux-java (#8911)
> apk (#8951)
> brightnessctl (#8758)
> efibootmgr (#9010)
> fastboot (#8904)
> optimus-manager (#8913)
> rclone (#8819)
> sops (#8821)
> tuned-adm (#8760)
> wg-quick (#8687)
One of my favorite things about fish is that it bundles completions for a huge number of packages. My experience with bash was that completion support was very spotty
If you love bash or zsh, and are in the habit of building long complex commands on the command line, then stick with bash or zsh. But if you are just running commands fish is far superior. If you are not a bash/zsh/posix expert fish is a cleaner language and you'll learn it more easily. A fully tricked out zsh might do everything that fish does, but it is very slow compared to fish.
Fish handles this very ably as well, of course! If you're a developer and you work in or deploy to a lot of environments where you can't install software, choosing what comes with the environment makes sense. But even when it comes to scripting, you won't regret sticking with Fish, imo.
true && echo hi
false || echo hi
export VAR=1
VAR=1 somecommand
echo "$(echo substitution)"3 months ago, 90 comments https://news.ycombinator.com/item?id=30734072
3 months ago, 20 comments https://news.ycombinator.com/item?id=30660587
7 months ago, 291 comments https://news.ycombinator.com/item?id=29341390