runsv: run ./finish with parameters (runit compat)
[oweals/busybox.git] / 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 FEATURE_SH_IS_NONE
11         help
12           Choose a shell. The ash shell is the most bash compatible
13           and full featured one.
14
15 config FEATURE_SH_IS_ASH
16         select ASH
17         bool "ash"
18
19 config FEATURE_SH_IS_HUSH
20         select HUSH
21         bool "hush"
22
23 ####config FEATURE_SH_IS_LASH
24 ####    select LASH
25 ####    bool "lash"
26
27 config FEATURE_SH_IS_MSH
28         select MSH
29         bool "msh"
30
31 config FEATURE_SH_IS_NONE
32         bool "none"
33
34 endchoice
35
36 config ASH
37         bool "ash"
38         default n
39         help
40           Tha 'ash' shell adds about 60k in the default configuration and is
41           the most complete and most pedantically correct shell included with
42           busybox. This shell is actually a derivative of the Debian 'dash'
43           shell (by Herbert Xu), which was created by porting the 'ash' shell
44           (written by Kenneth Almquist) from NetBSD.
45
46 config ASH_BASH_COMPAT
47         bool "bash-compatible extensions"
48         default y
49         depends on ASH
50         help
51           Enable bash-compatible extensions.
52
53 config ASH_JOB_CONTROL
54         bool "Job control"
55         default y
56         depends on ASH
57         help
58           Enable job control in the ash shell.
59
60 config ASH_READ_NCHARS
61         bool "'read -n N' and 'read -s' support"
62         default n
63         depends on ASH
64         help
65           'read -n N' will return a value after N characters have been read.
66           'read -s' will read without echoing the user's input.
67
68 config ASH_READ_TIMEOUT
69         bool "'read -t S' support"
70         default n
71         depends on ASH
72         help
73           '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'.
76
77 config ASH_ALIAS
78         bool "alias support"
79         default y
80         depends on ASH
81         help
82           Enable alias support in the ash shell.
83
84 config ASH_GETOPTS
85         bool "Builtin getopt to parse positional parameters"
86         default n
87         depends on ASH
88         help
89           Enable getopts builtin in the ash shell.
90
91 config ASH_BUILTIN_ECHO
92         bool "Builtin version of 'echo'"
93         default y
94         depends on ASH
95         help
96           Enable support for echo, builtin to ash.
97
98 config 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
105 config ASH_BUILTIN_TEST
106         bool "Builtin version of 'test'"
107         default y
108         depends on ASH
109         help
110           Enable support for test, builtin to ash.
111
112 config ASH_CMDCMD
113         bool "'command' command to override shell builtins"
114         default n
115         depends on ASH
116         help
117           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.
120
121 config ASH_MAIL
122         bool "Check for new mail on interactive shells"
123         default y
124         depends on ASH
125         help
126           Enable "check for new mail" in the ash shell.
127
128 config ASH_OPTIMIZE_FOR_SIZE
129         bool "Optimize for size instead of speed"
130         default y
131         depends on ASH
132         help
133           Compile ash for reduced size at the price of speed.
134
135 config ASH_RANDOM_SUPPORT
136         bool "Pseudorandom generator and $RANDOM variable"
137         default n
138         depends on ASH
139         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.
143           After "unset RANDOM" the generator will switch off and this
144           variable will no longer have special treatment.
145
146 config ASH_EXPAND_PRMT
147         bool "Expand prompt string"
148         default n
149         depends on ASH
150         help
151           "PS#" may contain volatile content, such as backquote commands.
152           This option recreates the prompt string from the environment
153           variable each time it is displayed.
154
155 config HUSH
156         bool "hush"
157         default n
158         help
159           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.
163
164           It will compile and work on no-mmu systems.
165
166           It does not handle select, aliases, brace expansion,
167           tilde expansion, &>file and >&file redirection of stdout+stderr.
168
169 config HUSH_BASH_COMPAT
170         bool "bash-compatible extensions"
171         default y
172         depends on HUSH
173         help
174           Enable bash-compatible extensions.
175
176 config HUSH_HELP
177         bool "help builtin"
178         default n
179         depends on HUSH
180         help
181           Enable help builtin in hush. Code size + ~1 kbyte.
182
183 config HUSH_INTERACTIVE
184         bool "Interactive mode"
185         default y
186         depends on HUSH
187         help
188           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
193 config 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.
203
204 config HUSH_TICK
205         bool "Process substitution"
206         default n
207         depends on HUSH
208         help
209           Enable process substitution `command` and $(command) in hush.
210
211 config HUSH_IF
212         bool "Support if/then/elif/else/fi"
213         default n
214         depends on HUSH
215         help
216           Enable if/then/elif/else/fi in hush.
217
218 config HUSH_LOOPS
219         bool "Support for, while and until loops"
220         default n
221         depends on HUSH
222         help
223           Enable for, while and until loops in hush.
224
225 config 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.
231
232 config 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
239 config 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
246 config 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
253 config LASH
254         bool "lash (deprecated: aliased to hush)"
255         default n
256         select HUSH
257         help
258           lash is deprecated and will be removed, please migrate to hush.
259
260 config MSH
261         bool "msh (deprecated: please use hush)"
262         default n
263         help
264           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
267 #         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
275 config 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
282 config 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
291 config FEATURE_SH_EXTRA_QUIET
292         bool "Hide message on interactive shell startup"
293         default n
294         depends on MSH || LASH || HUSH || ASH
295         help
296           Remove the busybox introduction when starting a shell.
297
298 config FEATURE_SH_STANDALONE
299         bool "Standalone shell"
300         default n
301         depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
302         help
303           This option causes busybox shells to use busybox applets
304           in preference to executables in the PATH whenever possible. For
305           example, entering the command 'ifconfig' into the shell would cause
306           busybox to use the ifconfig busybox applet. Specifying the fully
307           qualified executable name, such as '/sbin/ifconfig' will still
308           execute the /sbin/ifconfig executable on the filesystem. This option
309           is generally used when creating a statically linked version of busybox
310           for use as a rescue shell, in the event that you screw up your system.
311
312           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.
316
317           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
322 #         over shell builtins of the same name. So turning this on will
323 #         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
327 #         run '/bin/busybox'. If you do not have the busybox binary sitting in
328 #         that exact location with that exact name, this option will not work at
329 #         all.
330
331 config 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
348 config 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
368 endmenu