freebsd-nq/bin/sh
Jilles Tjoelker 4b45b49a70 sh: Remove special %builtin PATH entry.
All builtins are now always found before a PATH search.

Most ash derivatives have an undocumented feature where the presence of an
entry "%builtin" in $PATH will cause builtins to be checked at that point of
the PATH search, rather than before looking at any directories as documented
in the man page (very old versions do document this feature).

I am removing this feature from sh, as it complicates the code, may violate
expectations (for example, /usr/bin/alias is very close to a forkbomb with
PATH=/usr/bin:%builtin, only /usr/bin/builtin not being another link saves
it) and appears to be unused (all the %builtin google code search finds is
in some sort of ash source code).

Note that aliases and functions took and take precedence above builtins.
Because aliases work on a lexical level they can only ever be overridden on
a lexical level (quoting or preceding 'builtin' or 'command'). Allowing
override of functions via PATH does not really fit in the model of sh and it
would work differently from %builtin if implemented.

Note: POSIX says special builtins are found before functions. We comply to
this because we do not allow functions with the same name as a special
builtin.

Silence from:	freebsd-hackers@ (message sent 20101225)
Discussed with:	dougb
2011-01-09 21:07:30 +00:00
..
bltin sh: Add kill builtin. 2010-12-21 22:47:34 +00:00
funcs sh: Update the suspend example for the change of the job control flag 2010-11-13 22:20:46 +00:00
alias.c sh: Add a function to print warnings (with command name and newline). 2010-12-21 20:47:06 +00:00
alias.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
arith_lex.l sh: arith: Disallow decimal constants starting with 0 (containing 8 or 9). 2010-12-18 23:03:51 +00:00
arith.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
arith.y sh: Use stalloc for arith variable names. 2010-04-25 20:43:19 +00:00
builtins.def sh: Add kill builtin. 2010-12-21 22:47:34 +00:00
cd.c sh: Add a function to print warnings (with command name and newline). 2010-12-21 20:47:06 +00:00
cd.h sh: On startup of the shell, use PWD from the environment if it is valid. 2010-04-17 14:35:46 +00:00
error.c sh: Add a function to print warnings (with command name and newline). 2010-12-21 20:47:06 +00:00
error.h sh: Add a function to print warnings (with command name and newline). 2010-12-21 20:47:06 +00:00
eval.c sh: Do not call exitshell() from evalcommand() unless evalcommand() forked 2011-01-05 23:17:29 +00:00
eval.h sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
exec.c sh: Remove special %builtin PATH entry. 2011-01-09 21:07:30 +00:00
exec.h sh: Improve the command builtin: 2010-03-06 16:57:53 +00:00
expand.c sh: Don't do optimized command substitution if expansions have side effects. 2010-12-28 21:27:08 +00:00
expand.h sh: Don't do optimized command substitution if expansions have side effects. 2010-12-28 21:27:08 +00:00
histedit.c sh: Properly restore exception handler in fc. 2010-12-29 19:39:51 +00:00
init.h
input.c In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
input.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
jobs.c sh: Add kill builtin. 2010-12-21 22:47:34 +00:00
jobs.h sh: Forget about terminated background processes sooner. 2010-06-29 22:37:45 +00:00
mail.c Consistently use "STATIC" for all functions in order to be able to set 2010-10-13 04:01:01 +00:00
mail.h
main.c sh: Make exit without parameters from EXIT trap POSIX-compliant. 2011-01-08 23:08:13 +00:00
main.h sh: Do not run callers' exception handlers in subshells. 2009-12-25 20:21:35 +00:00
Makefile sh: Add kill builtin. 2010-12-21 22:47:34 +00:00
memalloc.c sh: Simplify "stack string" code slightly. 2010-12-27 22:18:27 +00:00
memalloc.h sh: Simplify "stack string" code slightly. 2010-12-27 22:18:27 +00:00
miscbltin.c sh: Code size optimizations to "stack string" memory allocation: 2010-11-23 22:17:39 +00:00
mkbuiltins sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mkinit.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mknodes.c sh: Fix crash with empty functions (f() { }) introduced in r196483 2009-08-28 22:41:25 +00:00
mksyntax.c sh: Remove the check that alpha/name/in_name chars are not CTL* bytes. 2010-11-20 14:30:28 +00:00
mktokens
myhistedit.h sh: Pass TERM changes to libedit. 2010-06-02 19:16:58 +00:00
mystring.c sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
mystring.h
nodes.c.pat In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
nodetypes
options.c sh: Code size optimizations to buffered output. 2010-11-20 14:14:52 +00:00
options.h sh: Various warning fixes (from WARNS=6 NO_WERROR=1): 2009-12-27 18:04:05 +00:00
output.c sh: Use vsnprintf() rather than crafting our own in fmtstr(). 2010-12-11 17:47:27 +00:00
output.h sh: Code size optimizations to buffered output. 2010-11-20 14:14:52 +00:00
parser.c sh: Allow arbitrary large numbers in CHECKSTRSPACE. 2010-12-26 13:25:47 +00:00
parser.h sh: Do IFS splitting on word in ${v+word} and ${v-word}. 2010-10-29 13:42:18 +00:00
redir.c sh: Check if dup2 for redirection from/to a file succeeds. 2010-12-31 18:20:17 +00:00
redir.h
sh.1 sh(1): Explain why it is a bad idea to use aliases in scripts. 2010-12-21 22:48:56 +00:00
shell.h In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
show.c In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
show.h sh: Constify various strings. 2009-12-24 18:41:14 +00:00
TOUR Correct assorted grammos and typos. 2006-04-16 11:54:01 +00:00
trap.c sh: Make exit without parameters from EXIT trap POSIX-compliant. 2011-01-08 23:08:13 +00:00
trap.h sh: Make exit without parameters from EXIT trap POSIX-compliant. 2011-01-08 23:08:13 +00:00
var.c sh: Check readonly status for assignments on regular builtins. 2011-01-01 13:26:18 +00:00
var.h sh: Check readonly status for assignments on regular builtins. 2011-01-01 13:26:18 +00:00