A Better Shell

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • busybox-w32

    WIN32 native port of BusyBox.

  • This has already been done in ADA. It was designed for better performance than the Cygwin shell.

    https://archive.fosdem.org/2019/schedule/event/ada_shell/

    https://github.com/AdaCore/gsh

    You could also use the busybox port of the Almquist shell, if you can refrain from most bashisms.

    https://frippery.org/busybox/

  • datastation

    App to easily query, script, and visualize data from every database, file, and API.

  • I want a better shell but only in that I want a bash-like language that works across mac, linux, and Windows. I cannot reliably get Bash installed on every Windows laptop I own.

    I want this for cross-platform build scripts. I build a desktop app for Windows, mac and Linux. I don't want a different language for each platform.

    And I don't want to write in Python or JavaScript or Ruby or Perl because they're all so much more verbose than bash.

    But bash on its own isn't enough either. I need the same Linux userland commands to work the same way on Windows. Powershell has mv and cp but they don't work the same way or have the same flags.

    I hacked together a version of this language in Python that operates line by line and massages the differences between things like mv and environment variables.

    https://github.com/multiprocessio/datastation/blob/master/sc...

    Here's a sample script it can run:

        yarn

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • crosh

    Minimal CROss-platform SHell (WIP, code is not real yet)

  • But this is a massive hack. So I'm starting work on a real language that supports a reasonable subset of Bash on Windows, macOS, and Linux and brings a reimplementation of the few key Linux userland commands (mv, cp, mkdir, rm plus new programs like append, prepend, replace, etc.) built into the interpreter.

    A sketch of this more real version implemented in Go is here: https://github.com/multiprocessio/crosh. It doesn't build at all yet but if you're interested you can follow along.

  • oursh

    Your comrade through the perilous world of UNIX.

  • A lot of this has to do with the integration between the Terminal and the Shell. A project that came up recently that seems to take on a few of the issues is https://blog.warp.dev/how-warp-works. I've been meaning to write up a proper critique of this project at some point, but I keep getting side-tracked.

    I also want a replacement for `fish`, however it's a pretty tall order to implement what I have in mind, and I got a bit stuck trying to find the right abstractions for background job management in Rust (there's a lot going on). But I genuinely believe a multi-language shell with POSIX support will finally allow us to move forward in the terminal environment. UI/UX issues like ctrl-c, window management, and everything else can be implemented as derivations from POSIX, or additions.

    While somewhat tangential to the main thread of this post, I'll still leave my (incomplete) shell here for anyone who's interested. https://github.com/nixpulvis/oursh. The README has a decent description of features I want off the bat, and there's a bunch of design level issues in the tracker.

    I'll never accept the death of the Terminal environment.

  • notty

    A new kind of terminal

  • Sounds like what nushell was trying to do, though it seems unmaintained for 5yrs.

    https://github.com/withoutboats/notty/

  • homebrew-emacs-plus

    Emacs Plus formulae for the Homebrew package manager

  • Spacemacs[1] is a particularly nifty solution to the emacs defaults being... special. There are other bespoke config systems out there, but it really impresses me. The maintainers take performance and, more importantly to me, interface consistency and discoverability seriously. It supports both Vi style bindings as well as the traditional Emacs ones. Combined with a distribution like Emacs Plus[2] with the --with-native-comp it's a very nice way to interact with the system.

    [1] https://www.spacemacs.org/

    [2] https://github.com/d12frosted/homebrew-emacs-plus

  • gsh

    A POSIX shell for Windows.

  • This has already been done in ADA. It was designed for better performance than the Cygwin shell.

    https://archive.fosdem.org/2019/schedule/event/ada_shell/

    https://github.com/AdaCore/gsh

    You could also use the busybox port of the Almquist shell, if you can refrain from most bashisms.

    https://frippery.org/busybox/

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • ngs

    Next Generation Shell (NGS)

  • Shameless plug follows.

    I think shells are horrible not only from (today's) programming perspective but also from UI/UX perspective. In response to commands, shells dump text to your screen: from stdout, from stderr, from different programs, humanly unreadable amounts - they just don't care, it's "not the shell's job" apparently.

    Here is my take: the shell's job is to do everything for my productivity. Imagine programmers arguing that "notepad" is the best, IDEs are not needed, we need to keep text editing pure.

    How about shells output objects on the screen and these can be interacted with? Amazing for shells, right? This exists for decades everywhere else.

    My vision for UI in NGS - https://github.com/ngs-lang/ngs/wiki/UI-Design

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts