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