4107e127d4b6b30f042e1e73029c5e458b4d740c
[openwrt.git] / package / busybox / config / shell / Config.in
1 #
2 # For a description of the syntax of this configuration file,
3 # see scripts/kbuild/config-language.txt.
4 #
5
6 menu "Shells"
7
8 choice
9         prompt "Choose your default shell"
10         default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
11         help
12           Choose a shell. The ash shell is the most bash compatible
13           and full featured one.
14
15 config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
16         select BUSYBOX_CONFIG_ASH
17         bool "ash"
18
19 config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
20         select BUSYBOX_CONFIG_HUSH
21         bool "hush"
22
23 ####config FEATURE_SH_IS_LASH
24 ####    select LASH
25 ####    bool "lash"
26
27 config BUSYBOX_CONFIG_FEATURE_SH_IS_MSH
28         select BUSYBOX_CONFIG_MSH
29         bool "msh"
30
31 config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE
32         bool "none"
33
34 endchoice
35
36 config BUSYBOX_CONFIG_ASH
37         bool "ash"
38         default y
39         help
40           Tha 'ash' shell adds about 60k in the default configuration and is
41           the most complete and most pedantically correct shell included with
42           busybox. This shell is actually a derivative of the Debian 'dash'
43           shell (by Herbert Xu), which was created by porting the 'ash' shell
44           (written by Kenneth Almquist) from NetBSD.
45
46 comment "Ash Shell Options"
47         depends on BUSYBOX_CONFIG_ASH
48
49 config BUSYBOX_CONFIG_ASH_BASH_COMPAT
50         bool "bash-compatible extensions"
51         default y
52         depends on BUSYBOX_CONFIG_ASH
53         help
54           Enable bash-compatible extensions.
55
56 config BUSYBOX_CONFIG_ASH_JOB_CONTROL
57         bool "Job control"
58         default y
59         depends on BUSYBOX_CONFIG_ASH
60         help
61           Enable job control in the ash shell.
62
63 config BUSYBOX_CONFIG_ASH_READ_NCHARS
64         bool "'read -n N' and 'read -s' support"
65         default n
66         depends on BUSYBOX_CONFIG_ASH
67         help
68           'read -n N' will return a value after N characters have been read.
69           'read -s' will read without echoing the user's input.
70
71 config BUSYBOX_CONFIG_ASH_READ_TIMEOUT
72         bool "'read -t S' support"
73         default y
74         depends on BUSYBOX_CONFIG_ASH
75         help
76           'read -t S' will return a value after S seconds have passed.
77           This implementation will allow fractional seconds, expressed
78           as a decimal fraction, e.g. 'read -t 2.5 foo'.
79
80 config BUSYBOX_CONFIG_ASH_ALIAS
81         bool "alias support"
82         default y
83         depends on BUSYBOX_CONFIG_ASH
84         help
85           Enable alias support in the ash shell.
86
87 config BUSYBOX_CONFIG_ASH_MATH_SUPPORT
88         bool "Posix math support"
89         default y
90         depends on BUSYBOX_CONFIG_ASH
91         help
92           Enable math support in the ash shell.
93
94 config BUSYBOX_CONFIG_ASH_MATH_SUPPORT_64
95         bool "Extend Posix math support to 64 bit"
96         default y
97         depends on BUSYBOX_CONFIG_ASH_MATH_SUPPORT
98         help
99           Enable 64-bit math support in the ash shell. This will make
100           the shell slightly larger, but will allow computation with very
101           large numbers.
102
103 config BUSYBOX_CONFIG_ASH_GETOPTS
104         bool "Builtin getopt to parse positional parameters"
105         default y
106         depends on BUSYBOX_CONFIG_ASH
107         help
108           Enable getopts builtin in the ash shell.
109
110 config BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
111         bool "Builtin version of 'echo'"
112         default y
113         depends on BUSYBOX_CONFIG_ASH
114         help
115           Enable support for echo, builtin to ash.
116
117 config BUSYBOX_CONFIG_ASH_BUILTIN_PRINTF
118         bool "Builtin version of 'printf'"
119         default y
120         depends on BUSYBOX_CONFIG_ASH
121         help
122           Enable support for printf, builtin to ash.
123
124 config BUSYBOX_CONFIG_ASH_BUILTIN_TEST
125         bool "Builtin version of 'test'"
126         default y
127         depends on BUSYBOX_CONFIG_ASH
128         help
129           Enable support for test, builtin to ash.
130
131 config BUSYBOX_CONFIG_ASH_CMDCMD
132         bool "'command' command to override shell builtins"
133         default y
134         depends on BUSYBOX_CONFIG_ASH
135         help
136           Enable support for the ash 'command' builtin, which allows
137           you to run the specified command with the specified arguments,
138           even when there is an ash builtin command with the same name.
139
140 config BUSYBOX_CONFIG_ASH_MAIL
141         bool "Check for new mail on interactive shells"
142         default n
143         depends on BUSYBOX_CONFIG_ASH
144         help
145           Enable "check for new mail" in the ash shell.
146
147 config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
148         bool "Optimize for size instead of speed"
149         default n
150         depends on BUSYBOX_CONFIG_ASH
151         help
152           Compile ash for reduced size at the price of speed.
153
154 config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
155         bool "Pseudorandom generator and variable $RANDOM"
156         default n
157         depends on BUSYBOX_CONFIG_ASH
158         help
159           Enable pseudorandom generator and dynamic variable "$RANDOM".
160           Each read of "$RANDOM" will generate a new pseudorandom value.
161           You can reset the generator by using a specified start value.
162           After "unset RANDOM" then generator will switch off and this
163           variable will no longer have special treatment.
164
165 config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
166         bool "Expand prompt string"
167         default y
168         depends on BUSYBOX_CONFIG_ASH
169         help
170           "PS#" may be contain volatile content, such as backquote commands.
171           This option recreates the prompt string from the environment
172           variable each time it is displayed.
173
174 config BUSYBOX_CONFIG_HUSH
175         bool "hush"
176         default n
177         help
178           hush is a very small shell (just 18k) and it has fairly complete
179           Bourne shell grammar. It even handles all the normal flow control
180           options such as if/then/elif/else/fi, for/in/do/done, while loops,
181           case/esac.
182
183           It uses only vfork, so it can be used on uClinux systems.
184
185           It does not handle select, functions, here documents ( <<
186           word ), arithmetic expansion, aliases, brace expansion, tilde
187           expansion, &> and >& redirection of stdout+stderr, etc.
188
189 config BUSYBOX_CONFIG_HUSH_HELP
190         bool "help builtin"
191         default n
192         depends on BUSYBOX_CONFIG_HUSH
193         help
194           Enable help builtin in hush. Code size + ~1 kbyte.
195
196 config BUSYBOX_CONFIG_HUSH_INTERACTIVE
197         bool "Interactive mode"
198         default n
199         depends on BUSYBOX_CONFIG_HUSH
200         help
201           Enable interactive mode (prompt and command editing).
202           Without this, hush simply reads and executes commands
203           from stdin just like a shell script from the file.
204           No prompt, no PS1/PS2 magic shell variables.
205
206 config BUSYBOX_CONFIG_HUSH_JOB
207         bool "Job control"
208         default n
209         depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE
210         help
211           Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
212           command (not entire shell), fg/bg builtins work. Without this option,
213           "cmd &" still works by simply spawning a process and immediately
214           prompting for next command (or executing next command in a script),
215           but no separate process group is formed.
216
217 config BUSYBOX_CONFIG_HUSH_TICK
218         bool "Process substitution"
219         default n
220         depends on BUSYBOX_CONFIG_HUSH
221         help
222           Enable process substitution `command` and $(command) in hush.
223
224 config BUSYBOX_CONFIG_HUSH_IF
225         bool "Support if/then/elif/else/fi"
226         default n
227         depends on BUSYBOX_CONFIG_HUSH
228         help
229           Enable if/then/elif/else/fi in hush.
230
231 config BUSYBOX_CONFIG_HUSH_LOOPS
232         bool "Support for, while and until loops"
233         default n
234         depends on BUSYBOX_CONFIG_HUSH
235         help
236           Enable for, while and until loops in hush.
237           As of 2008-07, break and continue statements are not supported.
238
239 config BUSYBOX_CONFIG_HUSH_CASE
240         bool "Support case ... esac statement"
241         default n
242         depends on BUSYBOX_CONFIG_HUSH
243         help
244           Enable case ... esac statement in hush. +400 bytes.
245
246 config BUSYBOX_CONFIG_LASH
247         bool "lash"
248         default n
249         select BUSYBOX_CONFIG_HUSH
250         help
251           lash is deprecated and will be removed, please migrate to hush.
252
253 config BUSYBOX_CONFIG_MSH
254         bool "msh"
255         default n
256         help
257           The minix shell (adds just 30k) is quite complete and handles things
258           like for/do/done, case/esac and all the things you expect a Bourne
259           shell to do. It is not always pedantically correct about Bourne
260           shell grammar (try running the shell testscript "tests/sh.testcases"
261           on it and compare vs bash) but for most things it works quite well.
262           It uses only vfork, so it can be used on uClinux systems.
263
264 comment "Bourne Shell Options"
265         depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
266
267 config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
268         bool "Hide message on interactive shell startup"
269         default n
270         depends on BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
271         help
272           Remove the busybox introduction when starting a shell.
273
274 config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
275         bool "Standalone shell"
276         default n
277         depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
278         help
279           This option causes busybox shells to use busybox applets
280           in preference to executables in the PATH whenever possible. For
281           example, entering the command 'ifconfig' into the shell would cause
282           busybox to use the ifconfig busybox applet. Specifying the fully
283           qualified executable name, such as '/sbin/ifconfig' will still
284           execute the /sbin/ifconfig executable on the filesystem. This option
285           is generally used when creating a statically linked version of busybox
286           for use as a rescue shell, in the event that you screw up your system.
287
288           This is implemented by re-execing /proc/self/exe (typically)
289           with right parameters. Some selected applets ("NOFORK" applets)
290           can even be executed without creating new process.
291           Instead, busybox will call <applet>_main() internally.
292
293           However, this causes problems in chroot jails without mounted /proc
294           and with ps/top (command name can be shown as 'exe' for applets
295           started this way).
296 # untrue?
297 #         Note that this will *also* cause applets to take precedence
298 #         over shell builtins of the same name. So turning this on will
299 #         eliminate any performance gained by turning on the builtin "echo"
300 #         and "test" commands in ash.
301 # untrue?
302 #         Note that when using this option, the shell will attempt to directly
303 #         run '/bin/busybox'. If you do not have the busybox binary sitting in
304 #         that exact location with that exact name, this option will not work at
305 #         all.
306
307 config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
308         bool "Run 'nofork' applets directly"
309         default n
310         depends on (BUSYBOX_CONFIG_MSH || BUSYBOX_CONFIG_LASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
311         help
312           This option causes busybox shells [currently only ash]
313           to not execute typical fork/exec/wait sequence, but call <applet>_main
314           directly, if possible. (Sometimes it is not possible: for example,
315           this is not possible in pipes).
316
317           This will be done only for some applets (those which are marked
318           NOFORK in include/applets.h).
319
320           This may significantly speed up some shell scripts.
321
322           This feature is relatively new. Use with care.
323
324 config BUSYBOX_CONFIG_CTTYHACK
325         bool "cttyhack"
326         default n
327         help
328           One common problem reported on the mailing list is "can't access tty;
329           job control turned off" error message which typically appears when
330           one tries to use shell with stdin/stdout opened to /dev/console.
331           This device is special - it cannot be a controlling tty.
332
333           Proper solution is to use correct device instead of /dev/console.
334
335           cttyhack provides "quick and dirty" solution to this problem.
336           It analyzes stdin with various ioctls, trying to determine whether
337           it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
338           If it detects one, it closes stdin/out/err and reopens that device.
339           Then it executes given program. Usage example for /etc/inittab
340           (for busybox init):
341
342           ::respawn:/bin/cttyhack /bin/sh
343
344 endmenu