8 November 2003

End of an era

I did something traumatic: I switched shells.

I’d been using tcsh for years, and before that csh, because… well, at the time I started using UNIX, the alternatives were all wretched. But as of version 2.05ish, bash has finally surpassed tcsh in the areas that matter… It finally has the necessary fully programmable command line completion, and supports UNICODE. It’s even a bit smaller when running.

I did consider all the other shells. If I ever wrote anything in shell script I’d switch to es (a variant of rc), because it has the simplest quoting rules and is the only one with lexical scoping. But I don’t, I only care about interactive use, and that means the main alternate contender was zsh, which doesn’t have UNICODE and is bloated.

The main hassle was hunting down how to put bash into the mode where the tab key does something useful, instead of just beeping and only completing filenames when you’ve already typed enough to make the name unique and could just have typed a * anyway. I mean, in what mad parallel universe is bash’s default behavior sensible?

My main impression so far is that bash syntax is really, really horrible. But since, as I say, I don’t write scripts in shell… The rest of it is good enough.

Addendum: There was a huge thread on MacSlash speculating about why Apple switched to bash for their default shell. Lots of conspiracy theories got voted up, and a posted response by the head of Apple’s BSD tools development team detailing exactly why they switched got buried with a score of 1. Kind of amusing, but kind of depressing. Slashdot’s moderation scheme clearly does not work on even the most basic level.

© mathew 2017