diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/shell/hush.c b/shell/hush.c index de04c015a..a6db16c35 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -44,14 +44,28 @@ | |||
44 | * | 44 | * |
45 | * Bash stuff (maybe optionally enable?): | 45 | * Bash stuff (maybe optionally enable?): |
46 | * &> and >& redirection of stdout+stderr | 46 | * &> and >& redirection of stdout+stderr |
47 | * Brace expansion | 47 | * Brace Expansion |
48 | * reserved words: [[ ]] function select | 48 | * reserved words: [[ ]] function select |
49 | * substrings ${var:1:5} | 49 | * substrings ${var:1:5} |
50 | * | 50 | * |
51 | * TODOs: | 51 | * TODOs: |
52 | * grep for "TODO" and fix (some of them are easy) | 52 | * grep for "TODO" and fix (some of them are easy) |
53 | * builtins: ulimit | 53 | * builtins: ulimit, local |
54 | * follow IFS rules more precisely, including update semantics | 54 | * follow IFS rules more precisely, including update semantics |
55 | * export builtin should be special, its arguments are assignments | ||
56 | * and therefore expansion of them should be "one-word" expansion: | ||
57 | * $ export i=`echo 'a b'` # export has one arg: "i=a b" | ||
58 | * compare with: | ||
59 | * $ ls i=`echo 'a b'` # ls has two args: "i=a" and "b" | ||
60 | * ls: cannot access i=a: No such file or directory | ||
61 | * ls: cannot access b: No such file or directory | ||
62 | * Note1: same applies to local builtin when we'll have it. | ||
63 | * Note2: bash 3.2.33(1) does this only if export word itself | ||
64 | * is not quoted: | ||
65 | * $ export i=`echo 'aaa bbb'`; echo "$i" | ||
66 | * aaa bbb | ||
67 | * $ "export" i=`echo 'aaa bbb'`; echo "$i" | ||
68 | * aaa | ||
55 | * | 69 | * |
56 | * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. | 70 | * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. |
57 | */ | 71 | */ |