2 # For a description of the syntax of this configuration file,
3 # see scripts/kbuild/config-language.txt.
13 Tha 'ash' shell adds about 60k in the default configuration and is
14 the most complete and most pedantically correct shell included with
15 busybox. This shell is actually a derivative of the Debian 'dash'
16 shell (by Herbert Xu), which was created by porting the 'ash' shell
17 (written by Kenneth Almquist) from NetBSD.
19 config ASH_BASH_COMPAT
20 bool "bash-compatible extensions"
24 Enable bash-compatible extensions.
26 config ASH_JOB_CONTROL
31 Enable job control in the ash shell.
38 Enable alias support in the ash shell.
41 bool "Builtin getopt to parse positional parameters"
45 Enable getopts builtin in the ash shell.
47 config ASH_BUILTIN_ECHO
48 bool "Builtin version of 'echo'"
52 Enable support for echo, builtin to ash.
54 config ASH_BUILTIN_PRINTF
55 bool "Builtin version of 'printf'"
59 Enable support for printf, builtin to ash.
61 config ASH_BUILTIN_TEST
62 bool "Builtin version of 'test'"
66 Enable support for test, builtin to ash.
69 bool "'command' command to override shell builtins"
73 Enable support for the ash 'command' builtin, which allows
74 you to run the specified command with the specified arguments,
75 even when there is an ash builtin command with the same name.
78 bool "Check for new mail on interactive shells"
82 Enable "check for new mail" in the ash shell.
84 config ASH_OPTIMIZE_FOR_SIZE
85 bool "Optimize for size instead of speed"
89 Compile ash for reduced size at the price of speed.
91 config ASH_RANDOM_SUPPORT
92 bool "Pseudorandom generator and $RANDOM variable"
96 Enable pseudorandom generator and dynamic variable "$RANDOM".
97 Each read of "$RANDOM" will generate a new pseudorandom value.
98 You can reset the generator by using a specified start value.
99 After "unset RANDOM" the generator will switch off and this
100 variable will no longer have special treatment.
102 config ASH_EXPAND_PRMT
103 bool "Expand prompt string"
107 "PS#" may contain volatile content, such as backquote commands.
108 This option recreates the prompt string from the environment
109 variable each time it is displayed.
115 hush is a small shell (22k). It handles the normal flow control
116 constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
117 case/esac. Redirections, here documents, $((arithmetic))
118 and functions are supported.
120 It will compile and work on no-mmu systems.
122 It does not handle select, aliases, brace expansion,
123 tilde expansion, &>file and >&file redirection of stdout+stderr.
125 config HUSH_BASH_COMPAT
126 bool "bash-compatible extensions"
130 Enable bash-compatible extensions.
137 Enable help builtin in hush. Code size + ~1 kbyte.
139 config HUSH_INTERACTIVE
140 bool "Interactive mode"
144 Enable interactive mode (prompt and command editing).
145 Without this, hush simply reads and executes commands
146 from stdin just like a shell script from a file.
147 No prompt, no PS1/PS2 magic shell variables.
152 depends on HUSH_INTERACTIVE
154 Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
155 command (not entire shell), fg/bg builtins work. Without this option,
156 "cmd &" still works by simply spawning a process and immediately
157 prompting for next command (or executing next command in a script),
158 but no separate process group is formed.
161 bool "Process substitution"
165 Enable process substitution `command` and $(command) in hush.
168 bool "Support if/then/elif/else/fi"
172 Enable if/then/elif/else/fi in hush.
175 bool "Support for, while and until loops"
179 Enable for, while and until loops in hush.
182 bool "Support case ... esac statement"
186 Enable case ... esac statement in hush. +400 bytes.
188 config HUSH_FUNCTIONS
189 bool "Support funcname() { commands; } syntax"
193 Enable support for shell functions in hush. +800 bytes.
196 bool "Support local builtin"
198 depends on HUSH_FUNCTIONS
200 Enable support for local variables in functions.
203 bool "Support export '-n' option"
207 Enable support for export '-n' option in hush. It is a bash extension.
209 config HUSH_RANDOM_SUPPORT
210 bool "Pseudorandom generator and $RANDOM variable"
214 Enable pseudorandom generator and dynamic variable "$RANDOM".
215 Each read of "$RANDOM" will generate a new pseudorandom value.
219 prompt "Choose which shell is aliased to 'sh' name"
220 default FEATURE_SH_IS_ASH
222 Choose which shell you want to be executed by 'sh' alias.
223 The ash shell is the most bash compatible and full featured one.
225 # note: cannot use "select ASH" here, it breaks "make allnoconfig"
226 config FEATURE_SH_IS_ASH
231 config FEATURE_SH_IS_HUSH
235 config FEATURE_SH_IS_NONE
241 prompt "Choose which shell is aliased to 'bash' name"
242 default FEATURE_BASH_IS_NONE
244 Choose which shell you want to be executed by 'bash' alias.
245 The ash shell is the most bash compatible and full featured one.
247 Note that selecting this option does not switch on any bash
248 compatibility code. It merely makes it possible to install
249 /bin/bash (sym)link and run scripts which start with
252 Many systems use it in scripts which use bash-specific features,
253 even simple ones like $RANDOM. Without this option, busybox
254 can't be used for running them because it won't recongnize
255 "bash" as a supported applet name.
257 config FEATURE_BASH_IS_ASH
262 config FEATURE_BASH_IS_HUSH
266 config FEATURE_BASH_IS_NONE
273 bool "lash (deprecated: aliased to hush)"
277 lash is deprecated and will be removed, please migrate to hush.
280 bool "msh (deprecated: please use hush)"
284 msh is deprecated and will be removed, please migrate to hush.
285 If there is a feature msh has but hush does not, please let us know.
287 # The minix shell (adds just 30k) is quite complete and handles things
288 # like for/do/done, case/esac and all the things you expect a Bourne
289 # shell to do. It is not always pedantically correct about Bourne
290 # shell grammar (try running the shell testscript "tests/sh.testcases"
291 # on it and compare vs bash) but for most things it works quite well.
292 # It uses only vfork, so it can be used on uClinux systems.
295 config SH_MATH_SUPPORT
296 bool "POSIX math support"
298 depends on ASH || HUSH
300 Enable math support in the shell via $((...)) syntax.
302 config SH_MATH_SUPPORT_64
303 bool "Extend POSIX math support to 64 bit"
305 depends on SH_MATH_SUPPORT
307 Enable 64-bit math support in the shell. This will make the shell
308 slightly larger, but will allow computation with very large numbers.
309 This is not in POSIX, so do not rely on this in portable code.
311 config FEATURE_SH_EXTRA_QUIET
312 bool "Hide message on interactive shell startup"
314 depends on HUSH || ASH
316 Remove the busybox introduction when starting a shell.
318 config FEATURE_SH_STANDALONE
319 bool "Standalone shell"
321 depends on (HUSH || ASH) && FEATURE_PREFER_APPLETS
323 This option causes busybox shells to use busybox applets
324 in preference to executables in the PATH whenever possible. For
325 example, entering the command 'ifconfig' into the shell would cause
326 busybox to use the ifconfig busybox applet. Specifying the fully
327 qualified executable name, such as '/sbin/ifconfig' will still
328 execute the /sbin/ifconfig executable on the filesystem. This option
329 is generally used when creating a statically linked version of busybox
330 for use as a rescue shell, in the event that you screw up your system.
332 This is implemented by re-execing /proc/self/exe (typically)
333 with right parameters. Some selected applets ("NOFORK" applets)
334 can even be executed without creating new process.
335 Instead, busybox will call <applet>_main() internally.
337 However, this causes problems in chroot jails without mounted /proc
338 and with ps/top (command name can be shown as 'exe' for applets
341 # Note that this will *also* cause applets to take precedence
342 # over shell builtins of the same name. So turning this on will
343 # eliminate any performance gained by turning on the builtin "echo"
344 # and "test" commands in ash.
346 # Note that when using this option, the shell will attempt to directly
347 # run '/bin/busybox'. If you do not have the busybox binary sitting in
348 # that exact location with that exact name, this option will not work at
351 config FEATURE_SH_NOFORK
352 bool "Run 'nofork' applets directly"
354 depends on (HUSH || ASH) && FEATURE_PREFER_APPLETS
356 This option causes busybox shells [currently only ash]
357 to not execute typical fork/exec/wait sequence, but call <applet>_main
358 directly, if possible. (Sometimes it is not possible: for example,
359 this is not possible in pipes).
361 This will be done only for some applets (those which are marked
362 NOFORK in include/applets.h).
364 This may significantly speed up some shell scripts.
366 This feature is relatively new. Use with care.
372 One common problem reported on the mailing list is "can't access tty;
373 job control turned off" error message which typically appears when
374 one tries to use shell with stdin/stdout opened to /dev/console.
375 This device is special - it cannot be a controlling tty.
377 Proper solution is to use correct device instead of /dev/console.
379 cttyhack provides "quick and dirty" solution to this problem.
380 It analyzes stdin with various ioctls, trying to determine whether
381 it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
382 If it detects one, it closes stdin/out/err and reopens that device.
383 Then it executes given program. Opening the device will make
384 that device a controlling tty. This may require cttyhack
385 to be a session leader.
387 Example for /etc/inittab (for busybox init):
389 ::respawn:/bin/cttyhack /bin/sh
391 Giving controlling tty to shell running with PID 1:
395 Starting an interactive shell from boot shell script: