hush: document a TODO in export builtin
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 3 Jun 2009 12:43:56 +0000 (14:43 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 3 Jun 2009 12:43:56 +0000 (14:43 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/hush.c

index de04c015a7f574f731440fb4b4a01c110e00b9b8..a6db16c3543fa475ad107f62e4c42e1b17f4343d 100644 (file)
  *
  * Bash stuff (maybe optionally enable?):
  *      &> and >& redirection of stdout+stderr
- *      Brace expansion
+ *      Brace Expansion
  *      reserved words: [[ ]] function select
  *      substrings ${var:1:5}
  *
  * TODOs:
  *      grep for "TODO" and fix (some of them are easy)
- *      builtins: ulimit
+ *      builtins: ulimit, local
  *      follow IFS rules more precisely, including update semantics
+ *      export builtin should be special, its arguments are assignments
+ *          and therefore expansion of them should be "one-word" expansion:
+ *              $ export i=`echo 'a  b'` # export has one arg: "i=a  b"
+ *          compare with:
+ *              $ ls i=`echo 'a  b'`     # ls has two args: "i=a" and "b"
+ *              ls: cannot access i=a: No such file or directory
+ *              ls: cannot access b: No such file or directory
+ *          Note1: same applies to local builtin when we'll have it.
+ *          Note2: bash 3.2.33(1) does this only if export word itself
+ *          is not quoted:
+ *              $ export i=`echo 'aaa  bbb'`; echo "$i"
+ *              aaa  bbb
+ *              $ "export" i=`echo 'aaa  bbb'`; echo "$i"
+ *              aaa
  *
  * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
  */