tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: external versions of sh built-in utilities

> This leads to the crux of the matter - I have been told that POSIX
> actually requires that all of the commands in this third category (actually
> all the sh built-in commands, except the special built-ins) have an
> executable that can be subject of an execvp(2) call.  The second group
> already have that, so it is only the third that matter here.
Are we talking about (in POSIX speak) "utilities implemented as a built-in"
(as opposed to "built-in utilities" -- which, in turn, differ from "special
built-in utilities")?
Examples of special built-in utilites are break, return.
Examples of (regular) built-in utilities are true, cd.
Examples of utilities implemented as a built-in may be echo, printf.

I don't know all of SUSv4tc2 by heart, but the relevant part seems to be 
2 Shell Command Language, 2.9 Shell Commands, 2.9.1 Simple Commands, 
(unnumbered) Command Search and Execution, and then

-- 1.d. for built-in utilites
-- 1.c/1.e.i.a for utilities implemented as a built-in

For (regular) built-in utilities (e.g., cd) I don't see a requirement in 1.d 
for an executable in PATH.

For utilities implemented as a built-in, 1.e.i.a demands the built-in only 
be used if the path search is successful. A successful path search is defined 
by "an executable file found", which may refer to the x bit set or "actions 
equivalent to the execl() function" to succeed (where the distinction is 
irrelevant due to /usr/bin/printf meeting both requirements).

Or are you talking about something completely different? Or a newer SUS?

Home | Main Index | Thread Index | Old Index