diff options
author | jilles <jilles@FreeBSD.org> | 2011-05-27 20:53:07 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2011-05-27 20:53:07 +0000 |
commit | aa5140b7ec861ac2939b1db8b6aa22e74a58a1d7 (patch) | |
tree | b0f51b2237bbd8a5722a21549a5e35788e411bd0 | |
parent | 5c7c156d1e87d7f343acc5808137d89bd70c871b (diff) | |
download | FreeBSD-src-aa5140b7ec861ac2939b1db8b6aa22e74a58a1d7.zip FreeBSD-src-aa5140b7ec861ac2939b1db8b6aa22e74a58a1d7.tar.gz |
sh: Remove the "exp" builtin.
The "exp" builtin is undocumented, non-standard and not very useful.
If exp's return value is not used, something like
VAR=$(exp EXPRESSION)
is equivalent to
VAR=$((EXPRESSION))
except that errors in the expression are fatal and quoting special
characters is not needed in the latter case.
If exp's return value is used, something like
if exp EXPRESSION >/dev/null
can be replaced by
if [ $((EXPRESSION)) -ne 0 ]
with similar differences.
The exp-run showed that "let" is close enough to bash's and ksh's builtin
that removing it would break a few ports. Therefore, "let" remains in 9.x.
PR: bin/104432
Exp-run done by: pav (with some other sh(1) changes)
-rw-r--r-- | bin/sh/arith_yacc.c | 2 | ||||
-rw-r--r-- | bin/sh/builtins.def | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/bin/sh/arith_yacc.c b/bin/sh/arith_yacc.c index 63f236c..f1ac59e 100644 --- a/bin/sh/arith_yacc.c +++ b/bin/sh/arith_yacc.c @@ -344,7 +344,7 @@ arith_t arith(const char *s) * The exp(1) builtin. */ int -expcmd(int argc, char **argv) +letcmd(int argc, char **argv) { const char *p; char *concat; diff --git a/bin/sh/builtins.def b/bin/sh/builtins.def index cfc6361..1cbeea9 100644 --- a/bin/sh/builtins.def +++ b/bin/sh/builtins.def @@ -60,7 +60,7 @@ echocmd echo evalcmd -s eval execcmd -s exec exitcmd -s exit -expcmd exp let +letcmd let exportcmd -s export -s readonly #exprcmd expr falsecmd false |