1. 50
  1.  

  2. 7

    Some of the dormant shells are more ‘mostly finished’ than completely dormant. The one I know about for sure is rc; the modern Unix versions are pleasantly usable, although they still don’t have job control. I believe there’s another version of rc in the Plan 9 ports collection.

    1. 2

      For rc, I’d suggest looking here: https://github.com/benavento/rc

      The plan 9 version of rc largely doesn’t need the interactive features, because they’re outsourced to the window system. The unix version needs them, and most ports don’t add them. This one does.

      And yes – it largely is done. There are some changes committed occasionally in 9front, but for the most part, we seem pretty happy with it.

      1. 1

        The version of rc I personally use has a number of changes cherry-picked from Bert Münnich’s features, which are on top of the base Byron Rakitzis version. Bert Münnich has a number of highly useful features (including quite good command completion); the repo is here.

        (Correct command completion for rc is harder than it looks because rc allows command paths like ‘a/b’, which search for that through $PATH. Most people probably don’t use that rc feature, but I do in order to namespace my personal commands and scripts.)

    2. 4

      Something that’s been bugging me lately about the shell interface is the attitude that “text/plain ought to be enough for anybody.” I feel like life would just be a little better if the fundamental interface of the OS would acknowledge that sound and graphics can also be useful forms of communication.

      1. 8

        Many of the shells on that page are concerned with structured data: Oil, Elvish, PowerShell, nushell, etc.

        Also http://www.oilshell.org/blog/2021/01/audio-and-graphics.html

        1. 3

          So, smalltalk?

        2. 4

          A lot of great new/rethought Unix utilities have been written in Rust in recent years (fzf, rg, fd, dust etc) and so I have this naive gut feeling that a shell written in Rust might be rather good. At the same time I’m getting more and more fed up with Zsh. Eg. the plugins seem a bit too kludgy and the completion syntax is just horrible. (I’ve written some of both.)

          Has anyone tried more than one of nushell/crush/ion? I’d like to hear something about their relative differences before picking one and using it for a couple of weeks.

          1. 7

            A lot of great new/rethought Unix utilities have been written in Rust in recent years (fzf, rg, fd, dust etc) and so I have this naive gut feeling that a shell written in Rust might be rather good.

            fzf is written in Go

          2. 3

            Missing my current favourite: rash

            1. 3
            2. 3

              As noted at the top, feel free to add projects to one of these pages, depending on whether it’s a DSL embedded in another language (Python, etc.) or a stand-alone shell language:

              https://github.com/oilshell/oil/wiki/Alternative-Shells

              https://github.com/oilshell/oil/wiki/Internal-DSLs-for-Shell

              1. 5

                I just added janetsh and janet-sh to the first and second pages respectively

                1. 3

                  there’s also closh

                  1. 1

                    Though slightly off-topic, I find babashka has a better philosophy of combining bash and clojure (ie. it doesn’t mix the two nor try to be a shell).

              2. 2

                A great overview.

                I also wouldn’t pick a new system part that isn’t written in Rust (or a similar safe & efficient language).

                Existing bits and pieces of my tech stack have Bestandsschutz, but if you try to sell me a replacement, it better be not written in C/C++ if you don’t want to get laughed out of the room.

                1. 16

                  I also wouldn’t pick a new system part that isn’t written in Rust (or a similar safe & efficient language).

                  This reads as very cargo-cult.

                  1. 4

                    I was thinking the same thing. @soc: are you really worried about your shell segfaulting? Or being attacked somehow? What attack vector would that be? You could easily write a shell just as insecure in Rust, you’d just have different vectors.

                    1. 2

                      I’d compare C/C++¹ with greenhouse emissions:

                      Every line of C/C++ that doesn’t get written is another C/C++ piece that doesn’t need to be decommissioned later.


                      ¹ I use “C/C++” as a catch-all phrase for the shared belief of their users that they can write “safe” C/C++ – despite 50 years of evidence to the contrary.

                    2. 1

                      I really don’t care. :-)

                  2. 1

                    Weird to see csh listed here. It’s not posix, but I’d still consider traditional / established.

                    1. 4

                      It’s certainly an alternative - just a very bad one.

                      1. 3

                        Oh, I’d completely agree. First thing I replace on a FreeBSD system. Even powershell feels more natural on UNIX than csh. (although to be quite honest, powershell is a WNT feature I’m jealous of)

                    2. 1

                      There’s also slsh, which is a shell for the S-Lang programming language ⌘ https://www.jedsoft.org/slang/slsh.html

                      1. 1

                        Are there any good shells written in JavaScript?

                        1. 1

                          Not listing sash, ash (busybox), mksh.

                          1. 2

                            Aren’t those POSIX shells?

                            Edit I see there is a section on POSIX shells. Maybe add links to these shells?