freebsd-nq/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 sh: Add a function to print warnings (with command name and newline). 2010-12-21 20:47:06 +00:00
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 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 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 sh: Fix crash with empty functions (f() { }) introduced in r196483 2009-08-28 22:41:25 +00:00
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 In the spirit of r90111, depend on c89 and remove the "STATIC" macro 2010-10-13 22:18:03 +00:00
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 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: 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 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 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