So I’m currently using zsh + oh my zsh, and have been using it for some years now. It’s good, it has amazing features (via plugins) and overall I’m happy with it. But lately it has become laggy for me (probably because of plugins) and I want to see if there’s any other shell with features like ZSH but faster and lighter?

I’ve tried Fish, and usually install it on my servers, but it’s not POSIX compliant so learning what commands actually do what in Fish seems like a hassle.

I’ve heard of Oilshell, Yash, Nushell but haven’t tried any of them.

What is your setup for your interactive shell?

  • ivn@jlai.lu
    link
    fedilink
    arrow-up
    16
    ·
    5 months ago

    Ditch oh my zsh, install the plugins directly.

    Because zsh is very fast and light. I’m using it with only a handful of plugins, manually installed, and starship

  • verassol@lemmy.ml
    link
    fedilink
    arrow-up
    11
    ·
    5 months ago

    It wouldn’t be fair to say zsh is slow because ohmyzsh is slow. ohmyzsh is notorious for being a bit bloated. If you pull the whole thing, it makes a mess of your shell and you really can’t tell anymore what is what.

    It’s possible to install the individual stuff you need from oh my zsh without pulling the whole thing.

    I am a happy antidote user. With it, you can do something like this on your zsh_plugins.txt file:

    ohmyzsh/ohmyzsh path:plugins/extract
    

    Though ohmyzsh provides its own means to enable and disable plugins, this will allow you to cut that down to the pulling only of individual plugins in the first place.

    Your mileage may vary, but other plugin managers may give you different ways to accomplish the same.

    zsh is quite an advanced shell. You will find other shells that do things radically different and have their own bells and whistles, but if you are going for feature parity it may be hard to find a replacement.

  • Feyd@programming.dev
    link
    fedilink
    arrow-up
    7
    ·
    5 months ago

    I use fish. I really like that it is already configured to be a comfortable and usable interactive shell out of the box.

    The differences from posix are generally easier to remember on the fish side imo (like if statements) and you generally only encounter them when you write scripts.

    You can also write scripts in bash if you want and there is a nice tool if you need to put environment variables into shell from a bash script (https://github.com/edc/bass)

  • Thinker@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    5 months ago

    I switched from Zsh to Nushell almost two years ago and I have never looked back. If you need POSIX compliance, Nushell is a no go. But it sounds like your real problem was just that Zsh was familiar whereas fish was not. Nushell strikes the perfect balance of offering the commands you’re used to but letting everything just make intuitive sense. Plus, its help command is so far above and beyond other shells. I rarely need to open the Nushell docs (even though they’re really good), and I never have to go the community (even though it’s awesome), because I can figure pretty much everything out just from interacting help within the terminal.

  • 4wd@programming.dev
    link
    fedilink
    arrow-up
    3
    arrow-down
    1
    ·
    5 months ago

    Why don’t you just remove all plugins and use standard zsh? All sorts of oh-my-soy are not really needed.

  • sudo@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    5 months ago

    Fish, no plugins. The POSIX differences are to your advantage when using interactively. Its amazing how much larger expressions you can construct in the repl before you start moving to a proper file. Its like moving from pure mysql or psql to mycli or pgcli.

    When you add it all up, the amount of effort you’ll expend to learn fish are small compared to the amount of effort you’ll save by trying to recreate the UX with plugins and custom scripts.