The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group

### C.4 Utilities

For the utilities included in IEEE Std 1003.1-2001, see the RATIONALE sections on the individual reference pages.

##### Exclusion of Utilities

The set of utilities contained in IEEE Std 1003.1-2001 is drawn from the base documents, with one addition: the c99 utility. This section contains rationale for some of the deliberations that led to this set of utilities, and why certain utilities were excluded.

Many utilities were evaluated by the standard developers; more historical utilities were excluded from the base documents than included. The following list contains many common UNIX system utilities that were not included as mandatory utilities, in the User Portability Utilities option, in the XSI extension, or in one of the software development groups. It is logistically difficult for this rationale to distribute correctly the reasons for not including a utility among the various utility options. Therefore, this section covers the reasons for all utilities not included in IEEE Std 1003.1-2001.

This rationale is limited to a discussion of only those utilities actively or indirectly evaluated by the standard developers of the base documents, rather than the list of all known UNIX utilities from all its variants.

adb
  The intent of the various software development utilities was to assist in the installation (rather than the actual development and debugging) of applications. This utility is primarily a debugging tool. Furthermore, many useful aspects of adb are very hardware-specific.
as
  Assemblers are hardware-specific and are included implicitly as part of the compilers in IEEE Std 1003.1-2001.
banner
  The only known use of this command is as part of the lp printer header pages. It was decided that the format of the header is implementation-defined, so this utility is superfluous to application portability.
calendar
  This reminder service program is not useful to conforming applications.
cancel
  The lp (line printer spooling) system specified is the most basic possible and did not need this level of application control.
chroot
  This is primarily of administrative use, requiring superuser privileges.
col
  No utilities defined in IEEE Std 1003.1-2001 produce output requiring such a filter. The nroff text formatter is present on many historical systems and will continue to remain as an extension; col is expected to be shipped by all the systems that ship nroff.
cpio
  This has been replaced by pax, for reasons explained in the rationale for that utility.
cpp
  This is subsumed by c99.
cu
  This utility is terminal-oriented and is not useful from shell scripts or typical application programs.
dc
  The functionality of this utility can be provided by the bc utility; bc was selected because it was easier to use and had superior functionality. Although the historical versions of bc are implemented using dc as a base, IEEE Std 1003.1-2001 prescribes the interface and not the underlying mechanism used to implement it.
dircmp
  Although a useful concept, the historical output of this directory comparison program is not suitable for processing in application programs. Also, the diff -r command gives equivalent functionality.
dis
  Disassemblers are hardware-specific.
emacs
  The community of emacs editing enthusiasts was adamant that the full emacs editor not be included in the base documents because they were concerned that an attempt to standardize this very powerful environment would encourage vendors to ship versions conforming strictly to the standard, but lacking the extensibility required by the community. The author of the original emacs program also expressed his desire to omit the program. Furthermore, there were a number of historical UNIX systems that did not include emacs, or included it without supporting it, but there were very few that did not include and support vi.
ld
  This is subsumed by c99.
line
  The functionality of line can be provided with read.
lint
  This technology is partially subsumed by c99. It is also hard to specify the degree of checking for possible error conditions in programs in any compiler, and specifying what lint would do in these cases is equally difficult.

  It is fairly easy to specify what a compiler does. It requires specifying the language, what it does with that language, and stating that the interpretation of any incorrect program is unspecified. Unfortunately, any description of lint is required to specify what to do with erroneous programs. Since the number of possible errors and questionable programming practices is infinite, one cannot require lint to detect all errors of any given class.

  Additionally, some vendors complained that since many compilers are distributed in a binary form without a lint facility (because the ISO C standard does not require one), implementing the standard as a stand-alone product will be much harder. Rather than being able to build upon a standard compiler component (simply by providing c99 as an interface), source to that compiler would most likely need to be modified to provide the lint functionality. This was considered a major burden on system providers for a very small gain to developers (users).

login
  This utility is terminal-oriented and is not useful from shell scripts or typical application programs.
lorder
  This utility is an aid in creating an implementation-defined detail of object libraries that the standard developers did not feel required standardization.
lpstat
  The lp system specified is the most basic possible and did not need this level of application control.
mail
  This utility was omitted in favor of mailx because there was a considerable functionality overlap between the two.
mknod
  This was omitted in favor of mkfifo, as mknod has too many implementation-defined functions.
news
  This utility is terminal-oriented and is not useful from shell scripts or typical application programs.
pack
  This compression program was considered inferior to compress.
passwd
  This utility was proposed in a historical draft of the base documents but met with too many objections to be included. There were various reasons:

  - Changing a password should not be viewed as a command, but as part of the login sequence. Changing a password should only be done while a trusted path is in effect.

  - Even though the text in early drafts was intended to allow a variety of implementations to conform, the security policy for one site may differ from another site running with identical hardware and software. One site might use password authentication while the other did not. Vendors could not supply a passwd utility that would conform to IEEE Std 1003.1-2001 for all sites using their system.

  - This is really a subject for a system administration working group or a security working group.

pcat
  This compression program was considered inferior to zcat.
pg
  This duplicated many of the features of the more pager, which was preferred by the standard developers.
prof
  The intent of the various software development utilities was to assist in the installation (rather than the actual development and debugging) of applications. This utility is primarily a debugging tool.
RCS
  RCS was originally considered as part of a version control utilities portion of the scope. However, this aspect was abandoned by the standard developers. SCCS is now included as an optional part of the XSI extension.
red
  Restricted editor. This was not considered by the standard developers because it never provided the level of security restriction required.
rsh
  Restricted shell. This was not considered by the standard developers because it does not provide the level of security restriction that is implied by historical documentation.
sdb
  The intent of the various software development utilities was to assist in the installation (rather than the actual development and debugging) of applications. This utility is primarily a debugging tool. Furthermore, some useful aspects of sdb are very hardware-specific.
sdiff
  The "side-by-side diff" utility from System V was omitted because it is used infrequently, and even less so by conforming applications. Despite being in System V, it is not in the SVID or XPG.
shar
  Any of the numerous "shell archivers" were excluded because they did not meet the requirement of existing practice.
shl
  This utility is terminal-oriented and is not useful from shell scripts or typical application programs. The job control aspects of the shell command language are generally more useful.
size
  The intent of the various software development utilities was to assist in the installation (rather than the actual development and debugging) of applications. This utility is primarily a debugging tool.
spell
  This utility is not useful from shell scripts or typical application programs. The spell utility was considered, but was omitted because there is no known technology that can be used to make it recognize general language for user-specified input without providing a complete dictionary along with the input file.
su
  This utility is not useful from shell scripts or typical application programs. (There was also sentiment to avoid security-related utilities.)
sum
  This utility was renamed cksum.
tar
  This has been replaced by pax, for reasons explained in the rationale for that utility.
unpack
  This compression program was considered inferior to uncompress.
wall
  This utility is terminal-oriented and is not useful in shell scripts or typical applications. It is generally used only by system administrators.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]