Charles Fisher

Authored Content

Authored Comments

Users learning Bourne-family shell scripting need to understand the history.

The POSIX shell has it's own standard, and is a much smaller language than provided by bash. This shell is relevant when using Debian dash, and somewhat less so with the Busybox shell. Standards that are prior to POSIX and ksh88 should not be studied in detail. Be sure to consult the correct references - HP-UX actually presents ksh88 for the "man sh-posix" command, which is completely wrong. The POSIX shell does not implement arrays and the [[ conditional structure.

Prior to POSIX was the '88 release of the Korn shell, which introduced [[ - many are surprised by the /bin/[ program and its relation to /bin/test. Korn also deprecates the -gt operator, as part of introducing floating point in the '93 release.

Bash took many Korn innovations, but also went its own way on several subjects (principally coprocesses).

I find that the POSIX standard, and Korn features in mksh (Android's default shell) are the best featureset to use, unless something specific is needed in one of the other shells. The mksh is much smaller than bash, and presents fewer problems when porting from commercial UNIX.

For normal work on Windows, I prefer gnome-terminal (which implements VTE). This is far superior to putty as it has tabs, and the color rendition is better. I am also easily able to install Cygwin/X on my home PC, then ZIP the install an unpack it on my work system, and it runs this way without any administrative privileges. I've tried other Cygwin terminals, but have found nothing better.

We also run VMS applications that require extreme vt220 emulation fidelity. I will normally use xterm for this work, and the associated vttest application clearly demonstrates how lacking most other emulators are with the more esoteric DEC command sequences. I would love to see tabs in xterm.

Unfortunately, there is no "one size fits all" for terminal emulation, especially if you require a larger and correct emulation command set.