blob: cf151933bb67b09e46d42d105bf594ac8b65589c [file] [log] [blame]
Eric Andersenc9f20d92002-12-05 08:41:41 +00001#
2# For a description of the syntax of this configuration file,
3# see scripts/kbuild/config-language.txt.
4#
5
Mike Frysinger9ac178a2005-09-24 05:49:36 +00006menu "Shells"
Eric Andersenc9f20d92002-12-05 08:41:41 +00007
8choice
9 prompt "Choose your default shell"
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000010 default FEATURE_SH_IS_NONE
Eric Andersenc9f20d92002-12-05 08:41:41 +000011 help
Eric Andersene5642112003-07-14 19:37:08 +000012 Choose a shell. The ash shell is the most bash compatible
Eric Andersen88c916b2003-10-22 09:58:56 +000013 and full featured one.
Eric Andersenc9f20d92002-12-05 08:41:41 +000014
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000015config FEATURE_SH_IS_ASH
16 select ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +000017 bool "ash"
18
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000019config FEATURE_SH_IS_HUSH
20 select HUSH
Eric Andersenc9f20d92002-12-05 08:41:41 +000021 bool "hush"
22
Denis Vlasenko96702ca2007-11-23 23:28:55 +000023####config FEATURE_SH_IS_LASH
24#### select LASH
25#### bool "lash"
Eric Andersenc9f20d92002-12-05 08:41:41 +000026
Denys Vlasenko1cc4b132009-08-21 00:05:51 +020027####config FEATURE_SH_IS_MSH
28#### select MSH
29#### bool "msh"
Eric Andersenc9f20d92002-12-05 08:41:41 +000030
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000031config FEATURE_SH_IS_NONE
Eric Andersena6b90512002-12-06 21:49:59 +000032 bool "none"
33
Eric Andersenc9f20d92002-12-05 08:41:41 +000034endchoice
35
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000036config ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +000037 bool "ash"
Rob Landley49576c02006-01-30 06:11:42 +000038 default n
Eric Andersenc9f20d92002-12-05 08:41:41 +000039 help
Eric Andersenb287e2e2003-08-08 23:40:12 +000040 Tha 'ash' shell adds about 60k in the default configuration and is
41 the most complete and most pedantically correct shell included with
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +000042 busybox. This shell is actually a derivative of the Debian 'dash'
Eric Andersen88c916b2003-10-22 09:58:56 +000043 shell (by Herbert Xu), which was created by porting the 'ash' shell
Eric Andersenc7bda1c2004-03-15 08:29:22 +000044 (written by Kenneth Almquist) from NetBSD.
Eric Andersenc9f20d92002-12-05 08:41:41 +000045
Denis Vlasenko92e13c22008-03-25 01:17:40 +000046config ASH_BASH_COMPAT
47 bool "bash-compatible extensions"
48 default y
49 depends on ASH
50 help
Bernhard Reutner-Fischer1dbc6432008-08-06 17:39:30 +000051 Enable bash-compatible extensions.
Denis Vlasenko92e13c22008-03-25 01:17:40 +000052
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000053config ASH_JOB_CONTROL
Paul Fox7ba12c62006-06-08 21:48:47 +000054 bool "Job control"
Eric Andersenc9f20d92002-12-05 08:41:41 +000055 default y
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000056 depends on ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +000057 help
Eric Andersene5642112003-07-14 19:37:08 +000058 Enable job control in the ash shell.
Eric Andersenc9f20d92002-12-05 08:41:41 +000059
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000060config ASH_READ_NCHARS
Paul Fox7ba12c62006-06-08 21:48:47 +000061 bool "'read -n N' and 'read -s' support"
Mike Frysinger9ac178a2005-09-24 05:49:36 +000062 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000063 depends on ASH
Mike Frysinger9ac178a2005-09-24 05:49:36 +000064 help
Paul Fox02eb9342005-09-07 16:56:02 +000065 'read -n N' will return a value after N characters have been read.
66 'read -s' will read without echoing the user's input.
Ned Ludd2123b7c2005-02-09 21:07:23 +000067
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000068config ASH_READ_TIMEOUT
Denis Vlasenkoc185e292008-07-16 23:45:11 +000069 bool "'read -t S' support"
Mike Frysinger9ac178a2005-09-24 05:49:36 +000070 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000071 depends on ASH
Mike Frysinger9ac178a2005-09-24 05:49:36 +000072 help
Paul Fox02eb9342005-09-07 16:56:02 +000073 'read -t S' will return a value after S seconds have passed.
74 This implementation will allow fractional seconds, expressed
75 as a decimal fraction, e.g. 'read -t 2.5 foo'.
Ned Ludd2123b7c2005-02-09 21:07:23 +000076
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000077config ASH_ALIAS
Paul Fox7ba12c62006-06-08 21:48:47 +000078 bool "alias support"
Eric Andersenc9f20d92002-12-05 08:41:41 +000079 default y
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000080 depends on ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +000081 help
Eric Andersene5642112003-07-14 19:37:08 +000082 Enable alias support in the ash shell.
Eric Andersenc9f20d92002-12-05 08:41:41 +000083
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000084config ASH_GETOPTS
Paul Fox6ab03782006-06-08 21:37:26 +000085 bool "Builtin getopt to parse positional parameters"
Eric Andersenc9f20d92002-12-05 08:41:41 +000086 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000087 depends on ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +000088 help
Glenn L McGrath53090cd2004-09-24 09:09:44 +000089 Enable getopts builtin in the ash shell.
Eric Andersenc9f20d92002-12-05 08:41:41 +000090
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000091config ASH_BUILTIN_ECHO
Paul Fox6ab03782006-06-08 21:37:26 +000092 bool "Builtin version of 'echo'"
93 default y
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000094 depends on ASH
Paul Fox6ab03782006-06-08 21:37:26 +000095 help
Bernhard Reutner-Fischereb10e172007-01-29 23:56:13 +000096 Enable support for echo, builtin to ash.
Paul Fox6ab03782006-06-08 21:37:26 +000097
Denis Vlasenkocd2663f2008-06-01 22:36:39 +000098config ASH_BUILTIN_PRINTF
99 bool "Builtin version of 'printf'"
100 default y
101 depends on ASH
102 help
103 Enable support for printf, builtin to ash.
104
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000105config ASH_BUILTIN_TEST
Paul Fox6ab03782006-06-08 21:37:26 +0000106 bool "Builtin version of 'test'"
107 default y
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000108 depends on ASH
Paul Fox6ab03782006-06-08 21:37:26 +0000109 help
Bernhard Reutner-Fischereb10e172007-01-29 23:56:13 +0000110 Enable support for test, builtin to ash.
Paul Fox6ab03782006-06-08 21:37:26 +0000111
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000112config ASH_CMDCMD
Paul Fox7ba12c62006-06-08 21:48:47 +0000113 bool "'command' command to override shell builtins"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000114 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000115 depends on ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000116 help
Eric Andersen3857a182003-07-22 10:14:32 +0000117 Enable support for the ash 'command' builtin, which allows
118 you to run the specified command with the specified arguments,
119 even when there is an ash builtin command with the same name.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000120
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000121config ASH_MAIL
Rob Landley2ec922e2006-04-13 23:22:16 +0000122 bool "Check for new mail on interactive shells"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000123 default y
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000124 depends on ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000125 help
Eric Andersene5642112003-07-14 19:37:08 +0000126 Enable "check for new mail" in the ash shell.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000127
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000128config ASH_OPTIMIZE_FOR_SIZE
Rob Landley2ec922e2006-04-13 23:22:16 +0000129 bool "Optimize for size instead of speed"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000130 default y
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000131 depends on ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000132 help
Rob Landley32251b42006-02-08 18:34:21 +0000133 Compile ash for reduced size at the price of speed.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000134
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000135config ASH_RANDOM_SUPPORT
Denis Vlasenko18f2a792009-04-05 09:02:11 +0000136 bool "Pseudorandom generator and $RANDOM variable"
Eric Andersen16767e22004-03-16 05:14:10 +0000137 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000138 depends on ASH
Eric Andersen16767e22004-03-16 05:14:10 +0000139 help
140 Enable pseudorandom generator and dynamic variable "$RANDOM".
141 Each read of "$RANDOM" will generate a new pseudorandom value.
142 You can reset the generator by using a specified start value.
Denis Vlasenko18f2a792009-04-05 09:02:11 +0000143 After "unset RANDOM" the generator will switch off and this
Eric Andersen16767e22004-03-16 05:14:10 +0000144 variable will no longer have special treatment.
145
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000146config ASH_EXPAND_PRMT
Rob Landley2ec922e2006-04-13 23:22:16 +0000147 bool "Expand prompt string"
"Vladimir N. Oleynik"bef14d72005-09-05 13:25:11 +0000148 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000149 depends on ASH
"Vladimir N. Oleynik"bef14d72005-09-05 13:25:11 +0000150 help
Denis Vlasenko18f2a792009-04-05 09:02:11 +0000151 "PS#" may contain volatile content, such as backquote commands.
Rob Landley32251b42006-02-08 18:34:21 +0000152 This option recreates the prompt string from the environment
153 variable each time it is displayed.
"Vladimir N. Oleynik"bef14d72005-09-05 13:25:11 +0000154
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000155config HUSH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000156 bool "hush"
157 default n
158 help
Denis Vlasenko2b2183a2009-04-13 14:23:12 +0000159 hush is a small shell (22k). It handles the normal flow control
160 constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
161 case/esac. Redirections, here documents, $((arithmetic))
162 and functions are supported.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000163
Denis Vlasenko18f2a792009-04-05 09:02:11 +0000164 It will compile and work on no-mmu systems.
Denis Vlasenkobe709c22008-07-28 00:01:16 +0000165
Denis Vlasenko2b2183a2009-04-13 14:23:12 +0000166 It does not handle select, aliases, brace expansion,
167 tilde expansion, &>file and >&file redirection of stdout+stderr.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000168
Denys Vlasenko9ca656b2009-06-10 13:39:35 +0200169config HUSH_BASH_COMPAT
170 bool "bash-compatible extensions"
171 default y
172 depends on HUSH
173 help
174 Enable bash-compatible extensions.
175
Denis Vlasenko06810332007-05-21 23:30:54 +0000176config HUSH_HELP
177 bool "help builtin"
178 default n
Denis Vlasenko42bffbf2007-06-08 08:02:53 +0000179 depends on HUSH
Denis Vlasenko06810332007-05-21 23:30:54 +0000180 help
181 Enable help builtin in hush. Code size + ~1 kbyte.
182
Denis Vlasenkob81b3df2007-04-28 16:48:04 +0000183config HUSH_INTERACTIVE
184 bool "Interactive mode"
185 default y
186 depends on HUSH
187 help
Denis Vlasenkoe3f2f892007-04-28 16:48:27 +0000188 Enable interactive mode (prompt and command editing).
189 Without this, hush simply reads and executes commands
190 from stdin just like a shell script from the file.
191 No prompt, no PS1/PS2 magic shell variables.
192
193config HUSH_JOB
194 bool "Job control"
195 default n
196 depends on HUSH_INTERACTIVE
197 help
198 Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
199 command (not entire shell), fg/bg builtins work. Without this option,
200 "cmd &" still works by simply spawning a process and immediately
201 prompting for next command (or executing next command in a script),
202 but no separate process group is formed.
Denis Vlasenkob81b3df2007-04-28 16:48:04 +0000203
Denis Vlasenko14b5dd92007-05-20 21:51:38 +0000204config HUSH_TICK
205 bool "Process substitution"
206 default n
Denis Vlasenko42bffbf2007-06-08 08:02:53 +0000207 depends on HUSH
Denis Vlasenko14b5dd92007-05-20 21:51:38 +0000208 help
209 Enable process substitution `command` and $(command) in hush.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000210
Denis Vlasenko06810332007-05-21 23:30:54 +0000211config HUSH_IF
212 bool "Support if/then/elif/else/fi"
213 default n
Denis Vlasenko42bffbf2007-06-08 08:02:53 +0000214 depends on HUSH
Denis Vlasenko06810332007-05-21 23:30:54 +0000215 help
216 Enable if/then/elif/else/fi in hush.
217
218config HUSH_LOOPS
219 bool "Support for, while and until loops"
220 default n
Denis Vlasenko42bffbf2007-06-08 08:02:53 +0000221 depends on HUSH
Denis Vlasenko06810332007-05-21 23:30:54 +0000222 help
223 Enable for, while and until loops in hush.
Denis Vlasenkobe709c22008-07-28 00:01:16 +0000224
225config HUSH_CASE
226 bool "Support case ... esac statement"
227 default n
228 depends on HUSH
229 help
230 Enable case ... esac statement in hush. +400 bytes.
Denis Vlasenko06810332007-05-21 23:30:54 +0000231
Denis Vlasenko2b2183a2009-04-13 14:23:12 +0000232config HUSH_FUNCTIONS
233 bool "Support funcname() { commands; } syntax"
234 default n
235 depends on HUSH
236 help
237 Enable support for shell functions in hush. +800 bytes.
238
Denys Vlasenko295fef82009-06-03 12:47:26 +0200239config HUSH_LOCAL
240 bool "Support local builtin"
241 default n
242 depends on HUSH_FUNCTIONS
243 help
244 Enable support for local variables in functions.
245
Denis Vlasenkoad4bd052009-04-20 22:04:21 +0000246config HUSH_EXPORT_N
247 bool "Support export '-n' option"
248 default n
249 depends on HUSH
250 help
251 Enable support for export '-n' option in hush. It is a bash extension.
252
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000253config LASH
Mike Frysinger70a2c8d2009-03-28 12:12:58 +0000254 bool "lash (deprecated: aliased to hush)"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000255 default n
Denis Vlasenko96702ca2007-11-23 23:28:55 +0000256 select HUSH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000257 help
Denis Vlasenko96702ca2007-11-23 23:28:55 +0000258 lash is deprecated and will be removed, please migrate to hush.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000259
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000260config MSH
Mike Frysingerb975feb2009-03-29 00:52:41 +0000261 bool "msh (deprecated: please use hush)"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000262 default n
Denys Vlasenko1cc4b132009-08-21 00:05:51 +0200263 select HUSH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000264 help
Mike Frysingerb975feb2009-03-29 00:52:41 +0000265 msh is deprecated and will be removed, please migrate to hush.
266 If there is a feature msh has but hush does not, please let us know.
267
Denis Vlasenko2b2183a2009-04-13 14:23:12 +0000268# The minix shell (adds just 30k) is quite complete and handles things
269# like for/do/done, case/esac and all the things you expect a Bourne
270# shell to do. It is not always pedantically correct about Bourne
271# shell grammar (try running the shell testscript "tests/sh.testcases"
272# on it and compare vs bash) but for most things it works quite well.
273# It uses only vfork, so it can be used on uClinux systems.
274
275
Mike Frysinger98c52642009-04-02 10:02:37 +0000276config SH_MATH_SUPPORT
277 bool "POSIX math support"
278 default y
279 depends on ASH || HUSH
280 help
281 Enable math support in the shell via $((...)) syntax.
282
283config SH_MATH_SUPPORT_64
284 bool "Extend POSIX math support to 64 bit"
285 default n
286 depends on SH_MATH_SUPPORT
287 help
288 Enable 64-bit math support in the shell. This will make the shell
289 slightly larger, but will allow computation with very large numbers.
290 This is not in POSIX, so do not rely on this in portable code.
291
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000292config FEATURE_SH_EXTRA_QUIET
Glenn L McGrath3b251852004-01-03 12:07:32 +0000293 bool "Hide message on interactive shell startup"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000294 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000295 depends on MSH || LASH || HUSH || ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000296 help
Glenn L McGrath3b251852004-01-03 12:07:32 +0000297 Remove the busybox introduction when starting a shell.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000298
Denis Vlasenko80d14be2007-04-10 23:03:30 +0000299config FEATURE_SH_STANDALONE
Eric Andersenc9f20d92002-12-05 08:41:41 +0000300 bool "Standalone shell"
301 default n
Denis Vlasenko80d14be2007-04-10 23:03:30 +0000302 depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
Eric Andersenc9f20d92002-12-05 08:41:41 +0000303 help
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000304 This option causes busybox shells to use busybox applets
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000305 in preference to executables in the PATH whenever possible. For
Eric Andersen075dd812004-04-07 09:34:27 +0000306 example, entering the command 'ifconfig' into the shell would cause
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000307 busybox to use the ifconfig busybox applet. Specifying the fully
Eric Andersen075dd812004-04-07 09:34:27 +0000308 qualified executable name, such as '/sbin/ifconfig' will still
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000309 execute the /sbin/ifconfig executable on the filesystem. This option
Rob Landley06ec8cf2006-03-03 19:02:50 +0000310 is generally used when creating a statically linked version of busybox
Eric Andersen075dd812004-04-07 09:34:27 +0000311 for use as a rescue shell, in the event that you screw up your system.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000312
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000313 This is implemented by re-execing /proc/self/exe (typically)
314 with right parameters. Some selected applets ("NOFORK" applets)
315 can even be executed without creating new process.
316 Instead, busybox will call <applet>_main() internally.
Paul Fox6ab03782006-06-08 21:37:26 +0000317
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000318 However, this causes problems in chroot jails without mounted /proc
319 and with ps/top (command name can be shown as 'exe' for applets
320 started this way).
321# untrue?
322# Note that this will *also* cause applets to take precedence
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000323# over shell builtins of the same name. So turning this on will
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000324# eliminate any performance gained by turning on the builtin "echo"
325# and "test" commands in ash.
326# untrue?
327# Note that when using this option, the shell will attempt to directly
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000328# run '/bin/busybox'. If you do not have the busybox binary sitting in
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000329# that exact location with that exact name, this option will not work at
330# all.
Eric Andersen6f8542b2004-09-24 01:25:39 +0000331
Denis Vlasenko9bc80d72008-04-12 20:07:53 +0000332config FEATURE_SH_NOFORK
333 bool "Run 'nofork' applets directly"
334 default n
335 depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
336 help
337 This option causes busybox shells [currently only ash]
338 to not execute typical fork/exec/wait sequence, but call <applet>_main
339 directly, if possible. (Sometimes it is not possible: for example,
340 this is not possible in pipes).
341
342 This will be done only for some applets (those which are marked
343 NOFORK in include/applets.h).
344
345 This may significantly speed up some shell scripts.
346
347 This feature is relatively new. Use with care.
348
Denis Vlasenko6d709972007-05-18 09:45:36 +0000349config CTTYHACK
350 bool "cttyhack"
351 default n
352 help
353 One common problem reported on the mailing list is "can't access tty;
354 job control turned off" error message which typically appears when
355 one tries to use shell with stdin/stdout opened to /dev/console.
356 This device is special - it cannot be a controlling tty.
357
358 Proper solution is to use correct device instead of /dev/console.
359
360 cttyhack provides "quick and dirty" solution to this problem.
361 It analyzes stdin with various ioctls, trying to determine whether
362 it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
363 If it detects one, it closes stdin/out/err and reopens that device.
364 Then it executes given program. Usage example for /etc/inittab
365 (for busybox init):
366
367 ::respawn:/bin/cttyhack /bin/sh
368
Eric Andersenc9f20d92002-12-05 08:41:41 +0000369endmenu