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