freebsd-dev/bin/sh
Jilles Tjoelker 84fbdd8ca0 sh: Expand assignment-like words specially for export/readonly/local.
Examples:
  export x=~
now expands the tilde
  local y=$1
is now safe, even if $1 contains IFS characters or metacharacters.

For a word to "look like an assignment", it must start with a name followed
by an equals sign, none of which may be quoted.

The special treatment applies when the first word (potentially after
"command") is "export", "readonly" or "local". There may be quoting
characters but no expansions. If "local" is overridden with a function there
is no special treatment ("export" and "readonly" cannot be overridden with a
function).

If things like
  local arr=(1 2 3)
are ever allowed in the future, they cannot call a "local" function. This
would either be a run-time error or it would call the builtin.

This matches Austin Group bug #351, planned for the next issue of POSIX.1.

PR:		bin/166771
2012-07-15 10:19:43 +00:00
..
bltin sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
funcs sh: Remove "kill" example function, which is superseded by the kill builtin 2012-01-21 20:39:17 +00:00
alias.c sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
alias.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
arith_yacc.c Add prototypes, ANSIfy functions definitions to reduce WARNS=6 output. 2012-01-25 08:42:19 +00:00
arith_yacc.h sh: Import arithmetic expression code from dash. 2011-02-08 23:18:06 +00:00
arith_yylex.c Add prototypes, ANSIfy functions definitions to reduce WARNS=6 output. 2012-01-25 08:42:19 +00:00
arith.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
builtins.def sh: Remove the "exp" builtin. 2011-05-27 20:53:07 +00:00
cd.c sh: Properly show "Not a directory" error in cd builtin. 2012-01-13 23:32:27 +00:00
cd.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
error.c
error.h sh: Allow EV_EXIT through function calls, make {...} <redir more consistent. 2011-04-23 22:28:56 +00:00
eval.c sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
eval.h sh: Fix execution of multiple statements in a trap when evalskip is set 2012-01-16 11:07:46 +00:00
exec.c sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
exec.h sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
expand.c sh: Make various functions static. 2012-01-01 22:17:12 +00:00
expand.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
histedit.c Add prototypes, ANSIfy functions definitions to reduce WARNS=6 output. 2012-01-25 08:42:19 +00:00
init.h sh: Remove special code for shell scripts without magic number. 2011-02-04 22:47:55 +00:00
input.c Merge libedit adjustment from NetBSD. 2012-07-11 22:17:58 +00:00
input.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
jobs.c sh: Fix build with -DDEBUG=2. 2012-04-02 17:16:24 +00:00
jobs.h sh: Use vfork in a few common cases. 2012-02-04 23:12:14 +00:00
mail.c
mail.h
main.c sh: Make various functions static. 2012-01-01 22:17:12 +00:00
main.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
Makefile Work better with how make/bmake works: 2012-05-24 19:48:15 +00:00
memalloc.c sh: Follow-up to r216743, grabstackblock() can be replaced with stalloc(). 2011-01-09 22:47:58 +00:00
memalloc.h sh: Follow-up to r216743, grabstackblock() can be replaced with stalloc(). 2011-01-09 22:47:58 +00:00
miscbltin.c sh: Remove an unused header. 2012-05-15 22:50:47 +00:00
mkbuiltins Work better with how make/bmake works: 2012-05-24 19:48:15 +00:00
mkinit.c Remove duplicated header files 2011-06-24 07:29:04 +00:00
mknodes.c
mksyntax.c sh: Allow quoting ^ and ] in bracket expressions. 2011-12-28 23:51:17 +00:00
mktokens sh: Add case statement fallthrough (with ';&' instead of ';;'). 2011-06-17 13:03:49 +00:00
myhistedit.h sh: Make various functions static. 2012-01-01 22:17:12 +00:00
mystring.c sh: Remove unused function scopyn(). 2012-01-01 22:15:38 +00:00
mystring.h sh: Remove unused function scopyn(). 2012-01-01 22:15:38 +00:00
nodes.c.pat
nodetypes sh: Remove special support for background simple commands. 2011-06-18 23:58:59 +00:00
options.c sh: Allow unsetting OPTIND. 2011-11-20 21:48:50 +00:00
options.h sh: Add do-nothing -h option. 2011-06-18 23:43:28 +00:00
output.c
output.h
parser.c sh: Remove special support for background simple commands. 2011-06-18 23:58:59 +00:00
parser.h sh: Do parameter expansion before printing PS4 (set -x). 2011-06-09 23:12:23 +00:00
redir.c sh: Remove special code for shell scripts without magic number. 2011-02-04 22:47:55 +00:00
redir.h
sh.1 sh: Expand assignment-like words specially for export/readonly/local. 2012-07-15 10:19:43 +00:00
shell.h sh: Detect dividing the smallest integer by -1. 2011-02-12 23:44:05 +00:00
show.c
show.h
TOUR sh: Various updates to the TOUR document. 2011-05-27 16:00:37 +00:00
trap.c sh: Fix execution of multiple statements in a trap when evalskip is set 2012-01-16 11:07:46 +00:00
trap.h sh: Fix duplicate prototypes for builtins. 2011-06-13 21:03:27 +00:00
var.c sh: Fix swapped INTON/INTOFF. 2012-02-04 23:29:07 +00:00
var.h sh: Use vfork in a few common cases. 2012-02-04 23:12:14 +00:00