Contents of /trunk/mkinitrd-magellan/busybox/shell/README
Parent Directory | Revision Log
Revision 1123 -
(show annotations)
(download)
Wed Aug 18 21:56:57 2010 UTC (14 years, 1 month ago) by niro
File size: 2036 byte(s)
Wed Aug 18 21:56:57 2010 UTC (14 years, 1 month ago) by niro
File size: 2036 byte(s)
-updated to busybox-1.17.1
1 | http://www.opengroup.org/onlinepubs/9699919799/ |
2 | Open Group Base Specifications Issue 7 |
3 | |
4 | |
5 | http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html |
6 | Shell & Utilities |
7 | |
8 | It says that any of the standard utilities may be implemented |
9 | as a regular shell built-in. It gives a list of utilities which |
10 | are usually implemented that way (and some of them can only |
11 | be implemented as built-ins, like "alias"): |
12 | |
13 | alias |
14 | bg |
15 | cd |
16 | command |
17 | false |
18 | fc |
19 | fg |
20 | getopts |
21 | jobs |
22 | kill |
23 | newgrp |
24 | pwd |
25 | read |
26 | true |
27 | umask |
28 | unalias |
29 | wait |
30 | |
31 | |
32 | http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html |
33 | Shell Command Language |
34 | |
35 | It says that shell must implement special built-ins. Special built-ins |
36 | differ from regular ones by the fact that variable assignments |
37 | done on special builtin are *PRESERVED*. That is, |
38 | |
39 | VAR=VAL special_builtin; echo $VAR |
40 | |
41 | should print VAL. |
42 | |
43 | (Another distinction is that an error in special built-in should |
44 | abort the shell, but this is not such a critical difference, |
45 | and moreover, at least bash's "set" does not follow this rule, |
46 | which is even codified in autoconf configure logic now...) |
47 | |
48 | List of special builtins: |
49 | |
50 | . file |
51 | : [argument...] |
52 | break [n] |
53 | continue [n] |
54 | eval [argument...] |
55 | exec [command [argument...]] |
56 | exit [n] |
57 | export name[=word]... |
58 | export -p |
59 | readonly name[=word]... |
60 | readonly -p |
61 | return [n] |
62 | set [-abCefhmnuvx] [-o option] [argument...] |
63 | set [+abCefhmnuvx] [+o option] [argument...] |
64 | set -- [argument...] |
65 | set -o |
66 | set +o |
67 | shift [n] |
68 | times |
69 | trap n [condition...] |
70 | trap [action condition...] |
71 | unset [-fv] name... |
72 | |
73 | In practice, no one uses this obscure feature - none of these builtins |
74 | gives any special reasons to play such dirty tricks. |
75 | |
76 | However. This section also says that *function invocation* should act |
77 | similar to special built-in. That is, variable assignments |
78 | done on function invocation should be preserved after function invocation. |
79 | |
80 | This is significant: it is not unthinkable to want to run a function |
81 | with some variables set to special values. But because of the above, |
82 | it does not work: variable will "leak" out of the function. |