So I’ve been using Linux now for a while, and am looking to migrate my dev environment to vim and spend more time in the command line. I’m fairly comfortable with bash but by no means an expert. I’ve used zsh with some minor customization but just recently learned about fish. I’d love to hear people’s opinions.
I use fish because I have better things to do than tweak my shell configuration and debug shell plugins.
When I tried oh-my-zsh and prezto (I think?) they came with tons of plugins that performed badly and made it hard to get things done (specifically, they ran git status synchronously on every new prompt, which does not work well in a moderately large repo). Fish had similar features but wasn’t horribly slow, so I use it.
Same. I’ve written a fish plugin, but other than that I just fish pretty much stock. It works and just gets out of my way.
I’m also using fish shell, it find it very user friendly and extremely practical. It gathers all the programs options which you can see when pressing Tab and together with the fzf plugin for history and file search it becomes a very smart shell to use.
I use Fish shell and while it is pretty nice on its own, the fact that it is non-standard does cause problems. Many times you will search for something online and you’ll find nice bash results, which either you will have to execute directly in bash or modify to work correctly in Fish.
I don’t think all of Fish’s design choices are the best, either. But for an OOTB experience, it is nicer than either Bash or Zsh.
In those cases, I simply switch to bash, do the deed, switch back.
I moved to the fish shell a while ago and I love it, everything I need works OOB. I don’t understand people complaining about the different sintax for scripts, this is a non issue, just use #!/bin/bash at the start of your script and it will use bash, or just execute directly with “bash script.sh”.
If you want you can install starship, which provides a lot of the nifty prompt customization I see in other people’s zsh configs. I’ve been using it with bash for a few months now and like it a lot.
I use tide with fish and I personally prefer it over starship.
Thanks for pointing me at tide. I always used the pure prompt but tide looks like pure on steroids.
Also look into the fzf plugin for fish. It’s the other plugin I use.
Thank you. Will take a look as well.
Still a bash lover after 24 years at the command line. 😄
I use zsh with a few customisations. I’ve used fish but it’s sometimes slow so I just stick to zsh.
Give me fish or give me vanilla bash.
I used zsh for ages but switched to fish a few months ago because its navigation features are amazingly smooth and seamless. I generally write scripts in sh or python so navigation is the most important part of the terminal for me. Fish has bash compatibility plugins if you need them, but the main reason I use it is that it’s the nicest feeling shell to use for getting around in a terminal that I’ve found so far.
That counts for a lot.
If you’re looking for a nicer shell for personal use, fish is pretty nice
If you want to run arbitrary scripts and deal with setup scripts from coworkers etc, you’ll want to fall back to zsh/bash regularly, though
If you’re fine with understanding when your shell is the problem, fish is nice for interactive use
All of those are good choices with different trade-offs. I am a long time zsh user but I’d say stick with bash until you feel strongly enough about your preferences to evaluate the other options for yourself.
An old sysadm introduced me to zsh 28 years ago now and I’ve used it as my primary shell ever since. It’s tried, tested and most certainly works well.
Fish, it just works. Customization is super simple and has a really nice webui if you’re into that sort of stuff. Plugins are easy to install with fisher. Out of the box it’s very ergonomic and you don’t have to deal with tons of scripts that may need debugging. Custom shell functions take 2 seconds to set up. Scripts use a shebang to specify the shell they run in, so you shouldn’t have any issues with that. Whenever I absolutely need to run a command with bash, I just switch to it, do what I need to do, and hop back to fish. Highly recommend, haven’t looked back since I started using it a few years ago :)
Depending on your use case. I personally use zsh and oh-my-zsh but you can always customize bash to be more like zsh, have auto completion, etc.
Let the religious shell wars begin … again
Only right answer is of course TCSH. Not much documentation and support, ancient but still receives new bugs in 2021 (on Debian), but attackers hate it! (I love it)
My real suggestion is to learn zsh and fish (and bash). Try using them for all your purposes and in the end you will automatically find the one (or more of them) that suits you best and that you like most for your daily tasks.
I like zsh with oh-my-zsh and Powerlevel10k. This gives me a clear indication of which system I am on and remains POSIX-compliant.
The biggest deal breaker for me for shells like fish are the they are not POSIX-compliant and I need to use remote systems regularly. Doesn’t make sense to use something with a different syntax to me.