Quote:
Originally Posted by
wisecracker
I had no idea that the transient command structure was dynamic and that there is a minimal requirement.
Every command is a single executable. When you type "ls" you invoke "/usr/bin/ls", which is a program in its own right, quite as any other program. Now there might be a package "basic.commands", which bundles "ls" with other, similarily ubiquitous commands, but that doesn't have to be so. You could remove "/usr/bin/ls" from a system with no other consequence than not being able to list directories/files.
Now, there is a list of programs ("commands"), which is described in the POSIX documents as "mandatory". That means, if a systems calls itself "UNIX" it can be expected to have these programs. "ls" is part of this list, as is "awk", "sed", "sh", etc.. These commands should be installed wether or not they are actually used in a script running on this system. The same goes for libraries, interfaces, system calls, and similar functions of the system. All these are described in the POSIX documents. For the example "ls" this would mean there is a description about which commandlne options it has to understand and what exactly these options will make "ls" do when invoked.
Everything else is installed on top of that, but it is not "UNIX", just very common. That goes for "perl" as well as "gzip" and "ssh" and whatnot. These are quite common tools, but not "part of the UNIX system". It was once quite common to have these annoying nodding sausage dogs in the back of a car, but just because these are (or were) quite common doesn't mean they were "part of the system 'automobile'", like the steering wheel or the brake.
I hope this helps.
bakunin