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.)