blob: 126dba8e581d77249fe72e5d3280efed44e8a146 [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
Denis Vlasenko7d219aa2006-10-05 10:17:08 +000027config FEATURE_SH_IS_MSH
28 select MSH
Eric Andersenc9f20d92002-12-05 08:41:41 +000029 bool "msh"
30
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
263 help
Mike Frysingerb975feb2009-03-29 00:52:41 +0000264 msh is deprecated and will be removed, please migrate to hush.
265 If there is a feature msh has but hush does not, please let us know.
266
Denis Vlasenko2b2183a2009-04-13 14:23:12 +0000267# The minix shell (adds just 30k) is quite complete and handles things
268# like for/do/done, case/esac and all the things you expect a Bourne
269# shell to do. It is not always pedantically correct about Bourne
270# shell grammar (try running the shell testscript "tests/sh.testcases"
271# on it and compare vs bash) but for most things it works quite well.
272# It uses only vfork, so it can be used on uClinux systems.
273
274
Mike Frysinger98c52642009-04-02 10:02:37 +0000275config SH_MATH_SUPPORT
276 bool "POSIX math support"
277 default y
278 depends on ASH || HUSH
279 help
280 Enable math support in the shell via $((...)) syntax.
281
282config SH_MATH_SUPPORT_64
283 bool "Extend POSIX math support to 64 bit"
284 default n
285 depends on SH_MATH_SUPPORT
286 help
287 Enable 64-bit math support in the shell. This will make the shell
288 slightly larger, but will allow computation with very large numbers.
289 This is not in POSIX, so do not rely on this in portable code.
290
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000291config FEATURE_SH_EXTRA_QUIET
Glenn L McGrath3b251852004-01-03 12:07:32 +0000292 bool "Hide message on interactive shell startup"
Eric Andersenc9f20d92002-12-05 08:41:41 +0000293 default n
Denis Vlasenko7d219aa2006-10-05 10:17:08 +0000294 depends on MSH || LASH || HUSH || ASH
Eric Andersenc9f20d92002-12-05 08:41:41 +0000295 help
Glenn L McGrath3b251852004-01-03 12:07:32 +0000296 Remove the busybox introduction when starting a shell.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000297
Denis Vlasenko80d14be2007-04-10 23:03:30 +0000298config FEATURE_SH_STANDALONE
Eric Andersenc9f20d92002-12-05 08:41:41 +0000299 bool "Standalone shell"
300 default n
Denis Vlasenko80d14be2007-04-10 23:03:30 +0000301 depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
Eric Andersenc9f20d92002-12-05 08:41:41 +0000302 help
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000303 This option causes busybox shells to use busybox applets
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000304 in preference to executables in the PATH whenever possible. For
Eric Andersen075dd812004-04-07 09:34:27 +0000305 example, entering the command 'ifconfig' into the shell would cause
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000306 busybox to use the ifconfig busybox applet. Specifying the fully
Eric Andersen075dd812004-04-07 09:34:27 +0000307 qualified executable name, such as '/sbin/ifconfig' will still
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000308 execute the /sbin/ifconfig executable on the filesystem. This option
Rob Landley06ec8cf2006-03-03 19:02:50 +0000309 is generally used when creating a statically linked version of busybox
Eric Andersen075dd812004-04-07 09:34:27 +0000310 for use as a rescue shell, in the event that you screw up your system.
Eric Andersenc9f20d92002-12-05 08:41:41 +0000311
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000312 This is implemented by re-execing /proc/self/exe (typically)
313 with right parameters. Some selected applets ("NOFORK" applets)
314 can even be executed without creating new process.
315 Instead, busybox will call <applet>_main() internally.
Paul Fox6ab03782006-06-08 21:37:26 +0000316
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000317 However, this causes problems in chroot jails without mounted /proc
318 and with ps/top (command name can be shown as 'exe' for applets
319 started this way).
320# untrue?
321# Note that this will *also* cause applets to take precedence
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000322# over shell builtins of the same name. So turning this on will
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000323# eliminate any performance gained by turning on the builtin "echo"
324# and "test" commands in ash.
325# untrue?
326# Note that when using this option, the shell will attempt to directly
Bernhard Reutner-Fischer3e8669f2008-07-22 18:27:53 +0000327# run '/bin/busybox'. If you do not have the busybox binary sitting in
Denis Vlasenko92c0b822007-05-08 17:27:17 +0000328# that exact location with that exact name, this option will not work at
329# all.
Eric Andersen6f8542b2004-09-24 01:25:39 +0000330
Denis Vlasenko9bc80d72008-04-12 20:07:53 +0000331config FEATURE_SH_NOFORK
332 bool "Run 'nofork' applets directly"
333 default n
334 depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
335 help
336 This option causes busybox shells [currently only ash]
337 to not execute typical fork/exec/wait sequence, but call <applet>_main
338 directly, if possible. (Sometimes it is not possible: for example,
339 this is not possible in pipes).
340
341 This will be done only for some applets (those which are marked
342 NOFORK in include/applets.h).
343
344 This may significantly speed up some shell scripts.
345
346 This feature is relatively new. Use with care.
347
Denis Vlasenko6d709972007-05-18 09:45:36 +0000348config CTTYHACK
349 bool "cttyhack"
350 default n
351 help
352 One common problem reported on the mailing list is "can't access tty;
353 job control turned off" error message which typically appears when
354 one tries to use shell with stdin/stdout opened to /dev/console.
355 This device is special - it cannot be a controlling tty.
356
357 Proper solution is to use correct device instead of /dev/console.
358
359 cttyhack provides "quick and dirty" solution to this problem.
360 It analyzes stdin with various ioctls, trying to determine whether
361 it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
362 If it detects one, it closes stdin/out/err and reopens that device.
363 Then it executes given program. Usage example for /etc/inittab
364 (for busybox init):
365
366 ::respawn:/bin/cttyhack /bin/sh
367
Eric Andersenc9f20d92002-12-05 08:41:41 +0000368endmenu