20 |
select HUSH |
select HUSH |
21 |
bool "hush" |
bool "hush" |
22 |
|
|
23 |
config FEATURE_SH_IS_LASH |
####config FEATURE_SH_IS_LASH |
24 |
select LASH |
#### select LASH |
25 |
bool "lash" |
#### bool "lash" |
26 |
|
|
27 |
config FEATURE_SH_IS_MSH |
config FEATURE_SH_IS_MSH |
28 |
select MSH |
select MSH |
36 |
config ASH |
config ASH |
37 |
bool "ash" |
bool "ash" |
38 |
default n |
default n |
|
select TEST |
|
39 |
help |
help |
40 |
Tha 'ash' shell adds about 60k in the default configuration and is |
Tha 'ash' shell adds about 60k in the default configuration and is |
41 |
the most complete and most pedantically correct shell included with |
the most complete and most pedantically correct shell included with |
42 |
busybox. This shell is actually a derivative of the Debian 'dash' |
busybox. This shell is actually a derivative of the Debian 'dash' |
43 |
shell (by Herbert Xu), which was created by porting the 'ash' shell |
shell (by Herbert Xu), which was created by porting the 'ash' shell |
44 |
(written by Kenneth Almquist) from NetBSD. |
(written by Kenneth Almquist) from NetBSD. |
45 |
|
|
46 |
comment "Ash Shell Options" |
comment "Ash Shell Options" |
47 |
depends on ASH |
depends on ASH |
48 |
|
|
49 |
|
config ASH_BASH_COMPAT |
50 |
|
bool "bash-compatible extensions" |
51 |
|
default y |
52 |
|
depends on ASH |
53 |
|
help |
54 |
|
Enable bash-compatible extensions. |
55 |
|
|
56 |
config ASH_JOB_CONTROL |
config ASH_JOB_CONTROL |
57 |
bool "Job control" |
bool "Job control" |
58 |
default y |
default y |
69 |
'read -s' will read without echoing the user's input. |
'read -s' will read without echoing the user's input. |
70 |
|
|
71 |
config ASH_READ_TIMEOUT |
config ASH_READ_TIMEOUT |
72 |
bool "'read -t S' support." |
bool "'read -t S' support" |
73 |
default n |
default n |
74 |
depends on ASH |
depends on ASH |
75 |
help |
help |
96 |
default n |
default n |
97 |
depends on ASH_MATH_SUPPORT |
depends on ASH_MATH_SUPPORT |
98 |
help |
help |
99 |
Enable 64-bit math support in the ash shell. This will make |
Enable 64-bit math support in the ash shell. This will make |
100 |
the shell slightly larger, but will allow computation with very |
the shell slightly larger, but will allow computation with very |
101 |
large numbers. |
large numbers. |
102 |
|
|
110 |
config ASH_BUILTIN_ECHO |
config ASH_BUILTIN_ECHO |
111 |
bool "Builtin version of 'echo'" |
bool "Builtin version of 'echo'" |
112 |
default y |
default y |
|
select ECHO |
|
113 |
depends on ASH |
depends on ASH |
114 |
help |
help |
115 |
Enable support for echo, built in to ash. |
Enable support for echo, builtin to ash. |
116 |
|
|
117 |
|
config ASH_BUILTIN_PRINTF |
118 |
|
bool "Builtin version of 'printf'" |
119 |
|
default y |
120 |
|
depends on ASH |
121 |
|
help |
122 |
|
Enable support for printf, builtin to ash. |
123 |
|
|
124 |
config ASH_BUILTIN_TEST |
config ASH_BUILTIN_TEST |
125 |
bool "Builtin version of 'test'" |
bool "Builtin version of 'test'" |
126 |
default y |
default y |
|
select TEST |
|
127 |
depends on ASH |
depends on ASH |
128 |
help |
help |
129 |
Enable support for test, built in to ash. |
Enable support for test, builtin to ash. |
130 |
|
|
131 |
config ASH_CMDCMD |
config ASH_CMDCMD |
132 |
bool "'command' command to override shell builtins" |
bool "'command' command to override shell builtins" |
174 |
config HUSH |
config HUSH |
175 |
bool "hush" |
bool "hush" |
176 |
default n |
default n |
|
select TRUE |
|
|
select FALSE |
|
|
select TEST |
|
177 |
help |
help |
178 |
hush is a very small shell (just 18k) and it has fairly complete |
hush is a very small shell (just 18k) and it has fairly complete |
179 |
Bourne shell grammar. It even handles all the normal flow control |
Bourne shell grammar. It even handles all the normal flow control |
180 |
options such as if/then/elif/else/fi, for/in/do/done, while loops, |
options such as if/then/elif/else/fi, for/in/do/done, while loops, |
181 |
etc. |
case/esac. |
182 |
|
|
183 |
It does not handle case/esac, select, function, here documents ( << |
It uses only vfork, so it can be used on uClinux systems. |
184 |
|
|
185 |
|
It does not handle select, functions, here documents ( << |
186 |
word ), arithmetic expansion, aliases, brace expansion, tilde |
word ), arithmetic expansion, aliases, brace expansion, tilde |
187 |
expansion, &> and >& redirection of stdout+stderr, etc. |
expansion, &> and >& redirection of stdout+stderr, etc. |
188 |
|
|
189 |
|
config HUSH_HELP |
190 |
|
bool "help builtin" |
191 |
|
default n |
192 |
|
depends on HUSH |
193 |
|
help |
194 |
|
Enable help builtin in hush. Code size + ~1 kbyte. |
195 |
|
|
196 |
|
config HUSH_INTERACTIVE |
197 |
|
bool "Interactive mode" |
198 |
|
default y |
199 |
|
depends on HUSH |
200 |
|
help |
201 |
|
Enable interactive mode (prompt and command editing). |
202 |
|
Without this, hush simply reads and executes commands |
203 |
|
from stdin just like a shell script from the file. |
204 |
|
No prompt, no PS1/PS2 magic shell variables. |
205 |
|
|
206 |
|
config HUSH_JOB |
207 |
|
bool "Job control" |
208 |
|
default n |
209 |
|
depends on HUSH_INTERACTIVE |
210 |
|
help |
211 |
|
Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current |
212 |
|
command (not entire shell), fg/bg builtins work. Without this option, |
213 |
|
"cmd &" still works by simply spawning a process and immediately |
214 |
|
prompting for next command (or executing next command in a script), |
215 |
|
but no separate process group is formed. |
216 |
|
|
217 |
|
config HUSH_TICK |
218 |
|
bool "Process substitution" |
219 |
|
default n |
220 |
|
depends on HUSH |
221 |
|
help |
222 |
|
Enable process substitution `command` and $(command) in hush. |
223 |
|
|
224 |
|
config HUSH_IF |
225 |
|
bool "Support if/then/elif/else/fi" |
226 |
|
default n |
227 |
|
depends on HUSH |
228 |
|
help |
229 |
|
Enable if/then/elif/else/fi in hush. |
230 |
|
|
231 |
|
config HUSH_LOOPS |
232 |
|
bool "Support for, while and until loops" |
233 |
|
default n |
234 |
|
depends on HUSH |
235 |
|
help |
236 |
|
Enable for, while and until loops in hush. |
237 |
|
As of 2008-07, break and continue statements are not supported. |
238 |
|
|
239 |
|
config HUSH_CASE |
240 |
|
bool "Support case ... esac statement" |
241 |
|
default n |
242 |
|
depends on HUSH |
243 |
|
help |
244 |
|
Enable case ... esac statement in hush. +400 bytes. |
245 |
|
|
246 |
config LASH |
config LASH |
247 |
bool "lash" |
bool "lash" |
248 |
default n |
default n |
249 |
select TRUE |
select HUSH |
250 |
select FALSE |
help |
251 |
select TEST |
lash is deprecated and will be removed, please migrate to hush. |
|
help |
|
|
lash is the very smallest shell (adds just 10k) and it is quite |
|
|
usable as a command prompt, but it is not suitable for any but the |
|
|
most trivial scripting (such as an initrd that calls insmod a few |
|
|
times) since it does not understand any Bourne shell grammar. It |
|
|
does handle pipes, redirects, and job control though. Adding in |
|
|
command editing makes it a very nice lightweight command prompt. |
|
|
|
|
252 |
|
|
253 |
config MSH |
config MSH |
254 |
bool "msh" |
bool "msh" |
255 |
default n |
default n |
|
select TRUE |
|
|
select FALSE |
|
|
select TEST |
|
256 |
help |
help |
257 |
The minix shell (adds just 30k) is quite complete and handles things |
The minix shell (adds just 30k) is quite complete and handles things |
258 |
like for/do/done, case/esac and all the things you expect a Bourne |
like for/do/done, case/esac and all the things you expect a Bourne |
259 |
shell to do. It is not always pedantically correct about Bourne |
shell to do. It is not always pedantically correct about Bourne |
260 |
shell grammar (try running the shell testscript "tests/sh.testcases" |
shell grammar (try running the shell testscript "tests/sh.testcases" |
261 |
on it and compare vs bash) but for most things it works quite well. |
on it and compare vs bash) but for most things it works quite well. |
262 |
It also uses only vfork, so it can be used on uClinux systems. |
It uses only vfork, so it can be used on uClinux systems. |
263 |
|
|
264 |
comment "Bourne Shell Options" |
comment "Bourne Shell Options" |
265 |
depends on MSH || LASH || HUSH || ASH |
depends on MSH || LASH || HUSH || ASH |
271 |
help |
help |
272 |
Remove the busybox introduction when starting a shell. |
Remove the busybox introduction when starting a shell. |
273 |
|
|
274 |
config FEATURE_SH_STANDALONE_SHELL |
config FEATURE_SH_STANDALONE |
275 |
bool "Standalone shell" |
bool "Standalone shell" |
276 |
default n |
default n |
277 |
depends on MSH || LASH || HUSH || ASH |
depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS |
278 |
help |
help |
279 |
This option causes the selected busybox shell to use busybox applets |
This option causes busybox shells to use busybox applets |
280 |
in preference to executables in the PATH whenever possible. For |
in preference to executables in the PATH whenever possible. For |
281 |
example, entering the command 'ifconfig' into the shell would cause |
example, entering the command 'ifconfig' into the shell would cause |
282 |
busybox to use the ifconfig busybox applet. Specifying the fully |
busybox to use the ifconfig busybox applet. Specifying the fully |
283 |
qualified executable name, such as '/sbin/ifconfig' will still |
qualified executable name, such as '/sbin/ifconfig' will still |
284 |
execute the /sbin/ifconfig executable on the filesystem. This option |
execute the /sbin/ifconfig executable on the filesystem. This option |
285 |
is generally used when creating a statically linked version of busybox |
is generally used when creating a statically linked version of busybox |
286 |
for use as a rescue shell, in the event that you screw up your system. |
for use as a rescue shell, in the event that you screw up your system. |
287 |
|
|
288 |
Note that this will *also* cause applets to take precedence |
This is implemented by re-execing /proc/self/exe (typically) |
289 |
over shell builtins of the same name. So turning this on will |
with right parameters. Some selected applets ("NOFORK" applets) |
290 |
eliminate any performance gained by turning on the builtin "echo" |
can even be executed without creating new process. |
291 |
and "test" commands in ash. |
Instead, busybox will call <applet>_main() internally. |
292 |
|
|
293 |
Note that when using this option, the shell will attempt to directly |
However, this causes problems in chroot jails without mounted /proc |
294 |
run '/bin/busybox'. If you do not have the busybox binary sitting in |
and with ps/top (command name can be shown as 'exe' for applets |
295 |
that exact location with that exact name, this option will not work at |
started this way). |
296 |
all. |
# untrue? |
297 |
|
# Note that this will *also* cause applets to take precedence |
298 |
config FEATURE_COMMAND_EDITING |
# over shell builtins of the same name. So turning this on will |
299 |
bool "Command line editing" |
# eliminate any performance gained by turning on the builtin "echo" |
300 |
default n |
# and "test" commands in ash. |
301 |
depends on MSH || LASH || HUSH || ASH |
# untrue? |
302 |
help |
# Note that when using this option, the shell will attempt to directly |
303 |
Enable command editing in shell. |
# run '/bin/busybox'. If you do not have the busybox binary sitting in |
304 |
|
# that exact location with that exact name, this option will not work at |
305 |
config FEATURE_COMMAND_EDITING_VI |
# all. |
306 |
bool "vi-style line editing commands" |
|
307 |
default n |
config FEATURE_SH_NOFORK |
308 |
depends on FEATURE_COMMAND_EDITING |
bool "Run 'nofork' applets directly" |
309 |
help |
default n |
310 |
Enable vi-style line editing in the shell. This mode can be |
depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS |
311 |
turned on and off with "set -o vi" and "set +o vi". |
help |
312 |
|
This option causes busybox shells [currently only ash] |
313 |
|
to not execute typical fork/exec/wait sequence, but call <applet>_main |
314 |
|
directly, if possible. (Sometimes it is not possible: for example, |
315 |
|
this is not possible in pipes). |
316 |
|
|
317 |
|
This will be done only for some applets (those which are marked |
318 |
|
NOFORK in include/applets.h). |
319 |
|
|
320 |
|
This may significantly speed up some shell scripts. |
321 |
|
|
322 |
|
This feature is relatively new. Use with care. |
323 |
|
|
324 |
|
config CTTYHACK |
325 |
|
bool "cttyhack" |
326 |
|
default n |
327 |
|
help |
328 |
|
One common problem reported on the mailing list is "can't access tty; |
329 |
|
job control turned off" error message which typically appears when |
330 |
|
one tries to use shell with stdin/stdout opened to /dev/console. |
331 |
|
This device is special - it cannot be a controlling tty. |
332 |
|
|
333 |
|
Proper solution is to use correct device instead of /dev/console. |
334 |
|
|
335 |
|
cttyhack provides "quick and dirty" solution to this problem. |
336 |
|
It analyzes stdin with various ioctls, trying to determine whether |
337 |
|
it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line). |
338 |
|
If it detects one, it closes stdin/out/err and reopens that device. |
339 |
|
Then it executes given program. Usage example for /etc/inittab |
340 |
|
(for busybox init): |
341 |
|
|
342 |
config FEATURE_COMMAND_HISTORY |
::respawn:/bin/cttyhack /bin/sh |
|
int "History size" |
|
|
range 0 99999 |
|
|
default 15 |
|
|
depends on FEATURE_COMMAND_EDITING |
|
|
help |
|
|
Specify command history size in shell. |
|
|
|
|
|
config FEATURE_COMMAND_SAVEHISTORY |
|
|
bool "History saving" |
|
|
default n |
|
|
depends on ASH && FEATURE_COMMAND_EDITING |
|
|
help |
|
|
Enable history saving in ash shell. |
|
|
|
|
|
config FEATURE_COMMAND_TAB_COMPLETION |
|
|
bool "Tab completion" |
|
|
default n |
|
|
depends on FEATURE_COMMAND_EDITING |
|
|
help |
|
|
Enable tab completion in shell. |
|
|
|
|
|
config FEATURE_COMMAND_USERNAME_COMPLETION |
|
|
bool "Username completion" |
|
|
default n |
|
|
depends on FEATURE_COMMAND_TAB_COMPLETION |
|
|
help |
|
|
Enable username completion in shell. |
|
|
|
|
|
config FEATURE_SH_FANCY_PROMPT |
|
|
bool "Fancy shell prompts" |
|
|
default n |
|
|
depends on FEATURE_COMMAND_EDITING |
|
|
help |
|
|
Setting this option allows for prompts to use things like \w and |
|
|
\$ and also using escape codes. |
|
343 |
|
|
344 |
endmenu |
endmenu |