1#
2# For a description of the syntax of this configuration file,
3# see docs/Kconfig-language.txt.
4#
5
6menu "Shells"
7
8
9choice
10	prompt "Choose which shell is aliased to 'sh' name"
11	default SH_IS_ASH
12	help
13	Choose which shell you want to be executed by 'sh' alias.
14	The ash shell is the most bash compatible and full featured one.
15
16# note: cannot use "select ASH" here, it breaks "make allnoconfig"
17config SH_IS_ASH
18	depends on !NOMMU
19	bool "ash"
20	select SHELL_ASH
21	help
22	Choose ash to be the shell executed by 'sh' name.
23	The ash code will be built into busybox. If you don't select
24	"ash" choice (CONFIG_ASH), this shell may only be invoked by
25	the name 'sh' (and not 'ash').
26
27config SH_IS_HUSH
28	bool "hush"
29	select SHELL_HUSH
30	help
31	Choose hush to be the shell executed by 'sh' name.
32	The hush code will be built into busybox. If you don't select
33	"hush" choice (CONFIG_HUSH), this shell may only be invoked by
34	the name 'sh' (and not 'hush').
35
36config SH_IS_NONE
37	bool "none"
38
39endchoice
40
41choice
42	prompt "Choose which shell is aliased to 'bash' name"
43	default BASH_IS_NONE
44	help
45	Choose which shell you want to be executed by 'bash' alias.
46	The ash shell is the most bash compatible and full featured one,
47	although compatibility is far from being complete.
48
49	Note that selecting this option does not switch on any bash
50	compatibility code. It merely makes it possible to install
51	/bin/bash (sym)link and run scripts which start with
52	#!/bin/bash line.
53
54	Many systems use it in scripts which use bash-specific features,
55	even simple ones like $RANDOM. Without this option, busybox
56	can't be used for running them because it won't recongnize
57	"bash" as a supported applet name.
58
59config BASH_IS_ASH
60	depends on !NOMMU
61	bool "ash"
62	select SHELL_ASH
63	help
64	Choose ash to be the shell executed by 'bash' name.
65	The ash code will be built into busybox. If you don't select
66	"ash" choice (CONFIG_ASH), this shell may only be invoked by
67	the name 'bash' (and not 'ash').
68
69config BASH_IS_HUSH
70	bool "hush"
71	select SHELL_HUSH
72	help
73	Choose hush to be the shell executed by 'bash' name.
74	The hush code will be built into busybox. If you don't select
75	"hush" choice (CONFIG_HUSH), this shell may only be invoked by
76	the name 'bash' (and not 'hush').
77
78config BASH_IS_NONE
79	bool "none"
80
81endchoice
82
83
84INSERT
85
86
87comment "Options common to all shells"
88if SHELL_ASH || SHELL_HUSH
89
90config FEATURE_SH_MATH
91	bool "POSIX math support"
92	default y
93	depends on SHELL_ASH || SHELL_HUSH
94	help
95	Enable math support in the shell via $((...)) syntax.
96
97config FEATURE_SH_MATH_64
98	bool "Extend POSIX math support to 64 bit"
99	default y
100	depends on FEATURE_SH_MATH
101	help
102	Enable 64-bit math support in the shell. This will make the shell
103	slightly larger, but will allow computation with very large numbers.
104	This is not in POSIX, so do not rely on this in portable code.
105
106config FEATURE_SH_MATH_BASE
107	bool "Support BASE#nnnn literals"
108	default y
109	depends on FEATURE_SH_MATH
110
111config FEATURE_SH_EXTRA_QUIET
112	bool "Hide message on interactive shell startup"
113	default y
114	depends on SHELL_ASH || SHELL_HUSH
115	help
116	Remove the busybox introduction when starting a shell.
117
118config FEATURE_SH_STANDALONE
119	bool "Standalone shell"
120	default n
121	depends on SHELL_ASH || SHELL_HUSH
122	help
123	This option causes busybox shells to use busybox applets
124	in preference to executables in the PATH whenever possible. For
125	example, entering the command 'ifconfig' into the shell would cause
126	busybox to use the ifconfig busybox applet. Specifying the fully
127	qualified executable name, such as '/sbin/ifconfig' will still
128	execute the /sbin/ifconfig executable on the filesystem. This option
129	is generally used when creating a statically linked version of busybox
130	for use as a rescue shell, in the event that you screw up your system.
131
132	This is implemented by re-execing /proc/self/exe (typically)
133	with right parameters.
134
135	However, there are drawbacks: it is problematic in chroot jails
136	without mounted /proc, and ps/top may show command name as 'exe'
137	for applets started this way.
138
139config FEATURE_SH_NOFORK
140	bool "Run 'nofork' applets directly"
141	default n
142	depends on SHELL_ASH || SHELL_HUSH
143	help
144	This option causes busybox shells to not execute typical
145	fork/exec/wait sequence, but call <applet>_main directly,
146	if possible. (Sometimes it is not possible: for example,
147	this is not possible in pipes).
148
149	This will be done only for some applets (those which are marked
150	NOFORK in include/applets.h).
151
152	This may significantly speed up some shell scripts.
153
154	This feature is relatively new. Use with care. Report bugs
155	to project mailing list.
156
157config FEATURE_SH_READ_FRAC
158	bool "read -t N.NNN support (+110 bytes)"
159	default y
160	depends on SHELL_ASH || SHELL_HUSH
161	help
162	Enable support for fractional second timeout in read builtin.
163
164config FEATURE_SH_HISTFILESIZE
165	bool "Use $HISTFILESIZE"
166	default y
167	depends on SHELL_ASH || SHELL_HUSH
168	help
169	This option makes busybox shells to use $HISTFILESIZE variable
170	to set shell history size. Note that its max value is capped
171	by "History size" setting in library tuning section.
172
173config FEATURE_SH_EMBEDDED_SCRIPTS
174	bool "Embed scripts in the binary"
175	default y
176	depends on SHELL_ASH || SHELL_HUSH
177	help
178	Allow scripts to be compressed and embedded in the busybox
179	binary. The scripts should be placed in the 'embed' directory
180	at build time. Like applets, scripts can be run as
181	'busybox SCRIPT ...' or by linking their name to the binary.
182
183	This also allows applets to be implemented as scripts: place
184	the script in 'applets_sh' and a stub C file containing
185	configuration in the appropriate subsystem directory.
186
187endif # Options common to all shells
188
189endmenu
190