A Unix without a test program
Courtesy of a recent entry, I was
reading over my dotfiles when I stumbled over a remnant of a rather
peculiar and annoying Unix (unfortunately, I no longer remember which
one it was). This Unix was notable for a simple reason: it didn't have
a test program.
You might sensibly ask how on earth anything that can possibly call
itself a Unix would be missing such a basic thing; after all, without
test a lot of scripts don't work at all, since test is also known as
'[', which is commonly used in Bourne shell condition checking. The
answer is simple: the people behind this Unix had made test a shell
builtin, so all of the shell scripts
still worked. They just hadn't set up a /bin/test program, presumably
because they didn't expect any sensible program to run test directly.
(This is slightly less crazy than it seems; if you have a a test
program and also a test shell builtin, you have to make sure that the
two behave exactly the same. If you expect the test program to never
be used, removing it simplifies your life and means that you don't have
to keep it in sync with your improvements to the shell builtin.)
As it happens, there is one sort of sensible program that does exactly
this: non-standard shells. My
shell doesn't have test as a builtin, so I needed an actual test
program; when this Unix didn't have one, my dotfiles became moderately
unhappy.
(My solution was to make a test Bourne shell script that just ran the
shell's builtin test, which is what this particular Unix vendor should
have done for /bin/test in the first place.)
|
|