mass renaming Kbuild -> Kbuild.src, Config.in -> Config.src
[oweals/busybox.git] / shell / Config.src
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 which shell is aliased to 'sh' name"
10         default FEATURE_SH_IS_NONE
11         help
12           Choose which shell you want to be executed by 'sh' alias.
13           The ash shell is the most bash compatible and full featured one.
14
15 config FEATURE_SH_IS_ASH
16         select ASH
17         bool "ash"
18         depends on !NOMMU
19
20 config FEATURE_SH_IS_HUSH
21         select HUSH
22         bool "hush"
23
24 config FEATURE_SH_IS_NONE
25         bool "none"
26
27 endchoice
28
29 choice
30         prompt "Choose which shell is aliased to 'bash' name"
31         default FEATURE_BASH_IS_NONE
32         help
33           Choose which shell you want to be executed by 'bash' alias.
34           The ash shell is the most bash compatible and full featured one.
35
36           Note that selecting this option does not switch on any bash
37           compatibility code. It merely makes it possible to install
38           /bin/bash (sym)link and run scripts which start with
39           #!/bin/bash line.
40
41           Many systems use it in scripts which use bash-specific features,
42           even simple ones like $RANDOM. Without this option, busybox
43           can't be used for running them because it won't recongnize
44           "bash" as a supported applet name.
45
46 config FEATURE_BASH_IS_ASH
47         select ASH
48         bool "ash"
49         depends on !NOMMU
50
51 config FEATURE_BASH_IS_HUSH
52         select HUSH
53         bool "hush"
54
55 config FEATURE_BASH_IS_NONE
56         bool "none"
57
58 endchoice
59
60 config ASH
61         bool "ash"
62         default n
63         depends on !NOMMU
64         help
65           Tha 'ash' shell adds about 60k in the default configuration and is
66           the most complete and most pedantically correct shell included with
67           busybox. This shell is actually a derivative of the Debian 'dash'
68           shell (by Herbert Xu), which was created by porting the 'ash' shell
69           (written by Kenneth Almquist) from NetBSD.
70
71 config ASH_BASH_COMPAT
72         bool "bash-compatible extensions"
73         default y
74         depends on ASH
75         help
76           Enable bash-compatible extensions.
77
78 config ASH_JOB_CONTROL
79         bool "Job control"
80         default y
81         depends on ASH
82         help
83           Enable job control in the ash shell.
84
85 config ASH_ALIAS
86         bool "alias support"
87         default y
88         depends on ASH
89         help
90           Enable alias support in the ash shell.
91
92 config ASH_GETOPTS
93         bool "Builtin getopt to parse positional parameters"
94         default n
95         depends on ASH
96         help
97           Enable getopts builtin in the ash shell.
98
99 config ASH_BUILTIN_ECHO
100         bool "Builtin version of 'echo'"
101         default y
102         depends on ASH
103         help
104           Enable support for echo, builtin to ash.
105
106 config ASH_BUILTIN_PRINTF
107         bool "Builtin version of 'printf'"
108         default y
109         depends on ASH
110         help
111           Enable support for printf, builtin to ash.
112
113 config ASH_BUILTIN_TEST
114         bool "Builtin version of 'test'"
115         default y
116         depends on ASH
117         help
118           Enable support for test, builtin to ash.
119
120 config ASH_CMDCMD
121         bool "'command' command to override shell builtins"
122         default n
123         depends on ASH
124         help
125           Enable support for the ash 'command' builtin, which allows
126           you to run the specified command with the specified arguments,
127           even when there is an ash builtin command with the same name.
128
129 config ASH_MAIL
130         bool "Check for new mail on interactive shells"
131         default y
132         depends on ASH
133         help
134           Enable "check for new mail" in the ash shell.
135
136 config ASH_OPTIMIZE_FOR_SIZE
137         bool "Optimize for size instead of speed"
138         default y
139         depends on ASH
140         help
141           Compile ash for reduced size at the price of speed.
142
143 config ASH_RANDOM_SUPPORT
144         bool "Pseudorandom generator and $RANDOM variable"
145         default n
146         depends on ASH
147         help
148           Enable pseudorandom generator and dynamic variable "$RANDOM".
149           Each read of "$RANDOM" will generate a new pseudorandom value.
150           You can reset the generator by using a specified start value.
151           After "unset RANDOM" the generator will switch off and this
152           variable will no longer have special treatment.
153
154 config ASH_EXPAND_PRMT
155         bool "Expand prompt string"
156         default n
157         depends on ASH
158         help
159           "PS#" may contain volatile content, such as backquote commands.
160           This option recreates the prompt string from the environment
161           variable each time it is displayed.
162
163 config HUSH
164         bool "hush"
165         default n
166         help
167           hush is a small shell (22k). It handles the normal flow control
168           constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
169           case/esac. Redirections, here documents, $((arithmetic))
170           and functions are supported.
171
172           It will compile and work on no-mmu systems.
173
174           It does not handle select, aliases, brace expansion,
175           tilde expansion, &>file and >&file redirection of stdout+stderr.
176
177 config HUSH_BASH_COMPAT
178         bool "bash-compatible extensions"
179         default y
180         depends on HUSH
181         help
182           Enable bash-compatible extensions.
183
184 config HUSH_HELP
185         bool "help builtin"
186         default n
187         depends on HUSH
188         help
189           Enable help builtin in hush. Code size + ~1 kbyte.
190
191 config HUSH_INTERACTIVE
192         bool "Interactive mode"
193         default y
194         depends on HUSH
195         help
196           Enable interactive mode (prompt and command editing).
197           Without this, hush simply reads and executes commands
198           from stdin just like a shell script from a file.
199           No prompt, no PS1/PS2 magic shell variables.
200
201 config HUSH_JOB
202         bool "Job control"
203         default n
204         depends on HUSH_INTERACTIVE
205         help
206           Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
207           command (not entire shell), fg/bg builtins work. Without this option,
208           "cmd &" still works by simply spawning a process and immediately
209           prompting for next command (or executing next command in a script),
210           but no separate process group is formed.
211
212 config HUSH_TICK
213         bool "Process substitution"
214         default n
215         depends on HUSH
216         help
217           Enable process substitution `command` and $(command) in hush.
218
219 config HUSH_IF
220         bool "Support if/then/elif/else/fi"
221         default n
222         depends on HUSH
223         help
224           Enable if/then/elif/else/fi in hush.
225
226 config HUSH_LOOPS
227         bool "Support for, while and until loops"
228         default n
229         depends on HUSH
230         help
231           Enable for, while and until loops in hush.
232
233 config HUSH_CASE
234         bool "Support case ... esac statement"
235         default n
236         depends on HUSH
237         help
238           Enable case ... esac statement in hush. +400 bytes.
239
240 config HUSH_FUNCTIONS
241         bool "Support funcname() { commands; } syntax"
242         default n
243         depends on HUSH
244         help
245           Enable support for shell functions in hush. +800 bytes.
246
247 config HUSH_LOCAL
248         bool "Support local builtin"
249         default n
250         depends on HUSH_FUNCTIONS
251         help
252           Enable support for local variables in functions.
253
254 config HUSH_EXPORT_N
255         bool "Support export '-n' option"
256         default n
257         depends on HUSH
258         help
259           Enable support for export '-n' option in hush. It is a bash extension.
260
261 config HUSH_RANDOM_SUPPORT
262         bool "Pseudorandom generator and $RANDOM variable"
263         default n
264         depends on HUSH
265         help
266           Enable pseudorandom generator and dynamic variable "$RANDOM".
267           Each read of "$RANDOM" will generate a new pseudorandom value.
268
269 config LASH
270         bool "lash (deprecated: aliased to hush)"
271         default n
272         select HUSH
273         help
274           lash is deprecated and will be removed, please migrate to hush.
275
276 config MSH
277         bool "msh (deprecated: please use hush)"
278         default n
279         select HUSH
280         help
281           msh is deprecated and will be removed, please migrate to hush.
282           If there is a feature msh has but hush does not, please let us know.
283
284 #         The minix shell (adds just 30k) is quite complete and handles things
285 #         like for/do/done, case/esac and all the things you expect a Bourne
286 #         shell to do. It is not always pedantically correct about Bourne
287 #         shell grammar (try running the shell testscript "tests/sh.testcases"
288 #         on it and compare vs bash) but for most things it works quite well.
289 #         It uses only vfork, so it can be used on uClinux systems.
290
291
292 config SH_MATH_SUPPORT
293         bool "POSIX math support"
294         default y
295         depends on ASH || HUSH
296         help
297           Enable math support in the shell via $((...)) syntax.
298
299 config SH_MATH_SUPPORT_64
300         bool "Extend POSIX math support to 64 bit"
301         default n
302         depends on SH_MATH_SUPPORT
303         help
304           Enable 64-bit math support in the shell. This will make the shell
305           slightly larger, but will allow computation with very large numbers.
306           This is not in POSIX, so do not rely on this in portable code.
307
308 config FEATURE_SH_EXTRA_QUIET
309         bool "Hide message on interactive shell startup"
310         default n
311         depends on MSH || LASH || HUSH || ASH
312         help
313           Remove the busybox introduction when starting a shell.
314
315 config FEATURE_SH_STANDALONE
316         bool "Standalone shell"
317         default n
318         depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
319         help
320           This option causes busybox shells to use busybox applets
321           in preference to executables in the PATH whenever possible. For
322           example, entering the command 'ifconfig' into the shell would cause
323           busybox to use the ifconfig busybox applet. Specifying the fully
324           qualified executable name, such as '/sbin/ifconfig' will still
325           execute the /sbin/ifconfig executable on the filesystem. This option
326           is generally used when creating a statically linked version of busybox
327           for use as a rescue shell, in the event that you screw up your system.
328
329           This is implemented by re-execing /proc/self/exe (typically)
330           with right parameters. Some selected applets ("NOFORK" applets)
331           can even be executed without creating new process.
332           Instead, busybox will call <applet>_main() internally.
333
334           However, this causes problems in chroot jails without mounted /proc
335           and with ps/top (command name can be shown as 'exe' for applets
336           started this way).
337 # untrue?
338 #         Note that this will *also* cause applets to take precedence
339 #         over shell builtins of the same name. So turning this on will
340 #         eliminate any performance gained by turning on the builtin "echo"
341 #         and "test" commands in ash.
342 # untrue?
343 #         Note that when using this option, the shell will attempt to directly
344 #         run '/bin/busybox'. If you do not have the busybox binary sitting in
345 #         that exact location with that exact name, this option will not work at
346 #         all.
347
348 config FEATURE_SH_NOFORK
349         bool "Run 'nofork' applets directly"
350         default n
351         depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
352         help
353           This option causes busybox shells [currently only ash]
354           to not execute typical fork/exec/wait sequence, but call <applet>_main
355           directly, if possible. (Sometimes it is not possible: for example,
356           this is not possible in pipes).
357
358           This will be done only for some applets (those which are marked
359           NOFORK in include/applets.h).
360
361           This may significantly speed up some shell scripts.
362
363           This feature is relatively new. Use with care.
364
365 config CTTYHACK
366         bool "cttyhack"
367         default n
368         help
369           One common problem reported on the mailing list is "can't access tty;
370           job control turned off" error message which typically appears when
371           one tries to use shell with stdin/stdout opened to /dev/console.
372           This device is special - it cannot be a controlling tty.
373
374           Proper solution is to use correct device instead of /dev/console.
375
376           cttyhack provides "quick and dirty" solution to this problem.
377           It analyzes stdin with various ioctls, trying to determine whether
378           it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
379           If it detects one, it closes stdin/out/err and reopens that device.
380           Then it executes given program. Opening the device will make
381           that device a controlling tty. This may require cttyhack
382           to be a session leader.
383
384           Example for /etc/inittab (for busybox init):
385
386           ::respawn:/bin/cttyhack /bin/sh
387
388           Giving controlling tty to shell running with PID 1:
389
390           $ exec cttyhack sh
391
392           Starting an interactive shell from boot shell script:
393
394           setsid cttyhack sh
395
396 endmenu