== A Unix without a _test_ program Courtesy of a [[recent entry ../sysadmin/WhyGenericProfile]], 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 ../programming/BourneListMatch]], 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 ../sysadmin/NonstandardShellAdvantage]]. 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.)