Hacker News new | ask | show | jobs
by mattbillenstein 3118 days ago
I think ksh was the first shell I was exposed to vi command-line editing in on a Sun workstation a long time ago -- I haven't thought about it in years as it seems bash is so prevalent, but good to so some folks still keeping it alive.
5 comments

I've never used it, but I'm deeply grateful for it because, from what I can tell, without Ksh we wouldn't have Zsh, which I use every day and really enjoy.
If you like zsh, you're going to love fish†

† The qualifying clause is probably unnecessary here.

I love zsh, but am not a huge fan of fish. Lots of non-standard things that don't play nicely with existing workflows.

I prefer bash/zsh/etc because of the ecosystem around them. If I wanted to throw that away and start from a different base I'd probably use Powershell or something like it to be honest.

I find fish interesting, because I thought it is what I wanted (throwing away the pain of sh syntax), but now I just have to keep switching between sh and fish and I keep forgetting which is which. I have to write too many scripts for other people, and I can at best assume they have bash.

I've gone back to bash, might try out zsh.

Zsh is a bit of a bear to configure -- the documentation is relatively chatty and verbose, and there is an enormous variety of options and configuration points available.

IMO its real benefit is in its scripting language, which is mostly a Bash superset with really nice quality-of-life features, namely a vast set of parameter expansion flags, super-advanced globbing options, native support for numerical-indexed arrays, and... it doesn't split arrays on whitespace unless you explicitly ask it to! You can freely iterate over filenames with whitespace, special characters, etc., and you technically don't need to quote any of it. A good Zsh programmer will be able to almost totally grep, awk, bc, etc., and all the overhead of spawning a subshell.

Why not just write scripts in bash (or, hell, Python?) and use fish as your shell?
Just because now it's two languages for loops to remember, I kept trying to write fish loops in bash scripts, and bash loops in fish shells.

Some people are better at this kind of thing than me, but I find it hard when languages are close in notation (I never confuse C++ and python, but I confuse python/ruby, or bash/fish).

Maybe even if not! I didn't care that much for zsh but I love fish.
I love zsh, but abandoned ship of fish long ago.
OpenBSD still uses a ksh fork as a default shell. mksh is also widely-available and pretty great -- I use it as my shell on Linux boxes, too.
its not a fork of ksh, its a fork of an open source ksh clone called pdksh that predates AT&T ksh open sourcing, and is frankly kinda crap. OpenBSD has improved it, but compared to real ksh its lacking quite a lot, most painfully sane substrings.
Right. In the spur of the moment I wrote "a fork of ksh" as in "a shell (mostly) conforming to ksh' specs", which is technically incorrect -- the worst kind of incorrect.
My first shell was ksh on a DEC Unix many years ago. That was the first scripting I ever did.
You'll still find it as the default shell on at least some BSDs, and I think AIX.
AIX defaults to ksh88. My first job out of college a long time ago was to maintain and enhance AIX's various installers, which involves some 100KLOC (!!) of ksh scripts. I was one of the first people on the team to move newer projects to Perl- this was early 00's and somewhat fashionable back then, and the only other scripting language supported on AIX at the time. In retrospect, it's possible everything might have been better off left as ksh :-)
Commercial UNIXen that bundled CDE had two ksh versions - ksh88 installed as the POSIX shell, and ksh93 installed as the CDE graphical shell as /usr/dt/bin/dtksh.

The dtksh binary bundled Motif X/Windows support, and scripts could easily and quickly build complex GUI applications. This actually remains the fastest and least resource intensive way to build a quick GUI.

https://sourceforge.net/projects/cdesktopenv/

The dtksh was written at Novell by Pendergrast, who wrote a textbook on it.

Modern ksh93 should make this a supported compile option.

The AIX installp format is my favorite package manager. It was fairly easy to debug it until it hit the ODM. The only time when AIX utility debugging got weird was when multibos went off the rails.

I started using ksh on AIX and it has been my favorite shell since then. I've written a few thousand SLOC worth of utilities and customization scripts in KornShell.

On OpenBSD, the default shell is their fork of pdksh. On NetBSD, it is Almquist Shell, and on FreeBSD, it is Tcsh (IIRC).
On FreeBSD it's tcsh for root and ash for non-root, oddly enough.
Interesting. Thanks.
ksh was not my first shell, but as much as you, it is where I use vi command-line editing a lot. It's one of the first shells I really got to grip with as a young budding system administrator. I didn't know any vim really before I went on a Sun scripting for sysadmin course. My Ksh scripting book has served me well over the many years.