1. 28

    fish, with http://fisherman.sh/.

    I love the typeahead autocompletion and the simplified/reduced syntax & configuration. The fact that it’s not POSIX-compliant isn’t usually an issue since I just use plugin-foreign-env to run scripts in bash when necessary (e.g. for nvm).

    The design principles of fish shell: https://fishshell.com/docs/current/design.html

    1. 8

      Also fish and for the same reasons spencer mentioned.

      My history with shells: sh/ksh/csh/whatever-pre-bash-sh, bash, zsh and now fish.

      Scripting is not an issue (you do use “#!/path/to/shell” in your scripts, right?) and POSIX-compliance isn’t either.

      Fish to me feels like to i3 of shells. i3 the window manager needs very little configuration to do what you’d expect and it’s the same for fish (instead of needing tons of config like zsh). I always used to be the kinda guy that wanted endless customization and configurability and I still sorta do but sane defaults have become important to me as well.

      1. 4

        and it’s the same for fish (instead of needing tons of config like zsh).

        Why would zsh need a lot of configuration?

        1. 2

          I’m wondering if people assume that oh-my-zsh is somehow necessary to make zsh work. If that’s the case, then yes, that’s a ton of config.

      2. 1

        I used fish until last week, and now use zsh. The zsh-autosuggestions and zsh-syntax-highlighing plugins emulate the behaviours from fish that I care about. Day to day I use an unholy amount of ad-hoc shell logic, and running bash to do the more complex stuff started annoying me. The exact thing that pushed me over the edge was wanting to loop over thing{2..27}. While there is probably a way to do it in fish, I already know how to do it in bash/zsh.

        I’ve used fish since the 2.0 release, and still use it on my home laptop.