#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Shells"

choice
	prompt "Choose your default shell"
	default CONFIG_FEATURE_SH_IS_NONE
	help
	  Choose a shell. The ash shell is the most bash compatible
	  and full featured one.

config CONFIG_FEATURE_SH_IS_ASH
	select CONFIG_ASH
	bool "ash"

config CONFIG_FEATURE_SH_IS_HUSH
	select CONFIG_HUSH
	bool "hush"

config CONFIG_FEATURE_SH_IS_LASH
	select CONFIG_LASH
	bool "lash"

config CONFIG_FEATURE_SH_IS_MSH
	select CONFIG_MSH
	bool "msh"

config CONFIG_FEATURE_SH_IS_NONE
	bool "none"

endchoice

config CONFIG_ASH
	bool "ash"
	default n
	select CONFIG_TEST
	help
	  Tha 'ash' shell adds about 60k in the default configuration and is
	  the most complete and most pedantically correct shell included with
	  busybox.  This shell is actually a derivative of the Debian 'dash'
	  shell (by Herbert Xu), which was created by porting the 'ash' shell
	  (written by Kenneth Almquist) from NetBSD.

comment "Ash Shell Options"
	depends on CONFIG_ASH

config CONFIG_ASH_JOB_CONTROL
	bool "Job control"
	default y
	depends on CONFIG_ASH
	help
	  Enable job control in the ash shell.

config CONFIG_ASH_READ_NCHARS
	bool "'read -n N' and 'read -s' support"
	default n
	depends on CONFIG_ASH
	help
	  'read -n N' will return a value after N characters have been read.
	  'read -s' will read without echoing the user's input.

config CONFIG_ASH_READ_TIMEOUT
	bool "'read -t S' support."
	default n
	depends on CONFIG_ASH
	help
	  'read -t S' will return a value after S seconds have passed.
	  This implementation will allow fractional seconds, expressed
	  as a decimal fraction, e.g. 'read -t 2.5 foo'.

config CONFIG_ASH_ALIAS
	bool "alias support"
	default y
	depends on CONFIG_ASH
	help
	  Enable alias support in the ash shell.

config CONFIG_ASH_MATH_SUPPORT
	bool "Posix math support"
	default y
	depends on CONFIG_ASH
	help
	  Enable math support in the ash shell.

config CONFIG_ASH_MATH_SUPPORT_64
	bool "Extend Posix math support to 64 bit"
	default n
	depends on CONFIG_ASH_MATH_SUPPORT
	help
	  Enable 64-bit math support in the ash shell.  This will make
	  the shell slightly larger, but will allow computation with very
	  large numbers.

config CONFIG_ASH_GETOPTS
	bool "Builtin getopt to parse positional parameters"
	default n
	depends on CONFIG_ASH
	help
	  Enable getopts builtin in the ash shell.

config CONFIG_ASH_BUILTIN_ECHO
	bool "Builtin version of 'echo'"
	default y
	select CONFIG_ECHO
	depends on CONFIG_ASH
	help
	  Enable support for echo, built in to ash.

config CONFIG_ASH_BUILTIN_TEST
	bool "Builtin version of 'test'"
	default y
	select CONFIG_TEST
	depends on CONFIG_ASH
	help
	  Enable support for test, built in to ash.

config CONFIG_ASH_CMDCMD
	bool "'command' command to override shell builtins"
	default n
	depends on CONFIG_ASH
	help
	  Enable support for the ash 'command' builtin, which allows
	  you to run the specified command with the specified arguments,
	  even when there is an ash builtin command with the same name.

config CONFIG_ASH_MAIL
	bool "Check for new mail on interactive shells"
	default y
	depends on CONFIG_ASH
	help
	  Enable "check for new mail" in the ash shell.

config CONFIG_ASH_OPTIMIZE_FOR_SIZE
	bool "Optimize for size instead of speed"
	default y
	depends on CONFIG_ASH
	help
	  Compile ash for reduced size at the price of speed.

config CONFIG_ASH_RANDOM_SUPPORT
	bool "Pseudorandom generator and variable $RANDOM"
	default n
	depends on CONFIG_ASH
	help
	  Enable pseudorandom generator and dynamic variable "$RANDOM".
	  Each read of "$RANDOM" will generate a new pseudorandom value.
	  You can reset the generator by using a specified start value.
	  After "unset RANDOM" then generator will switch off and this
	  variable will no longer have special treatment.

config CONFIG_ASH_EXPAND_PRMT
	bool "Expand prompt string"
	default n
	depends on CONFIG_ASH
	help
	  "PS#" may be contain volatile content, such as backquote commands.
	  This option recreates the prompt string from the environment
	  variable each time it is displayed.

config CONFIG_HUSH
	bool "hush"
	default n
	select CONFIG_TRUE
	select CONFIG_FALSE
	select CONFIG_TEST
	help
	  hush is a very small shell (just 18k) and it has fairly complete
	  Bourne shell grammar.  It even handles all the normal flow control
	  options such as if/then/elif/else/fi, for/in/do/done, while loops,
	  etc.

	  It does not handle case/esac, select, function, here documents ( <<
	  word ), arithmetic expansion, aliases, brace expansion, tilde
	  expansion, &> and >& redirection of stdout+stderr, etc.


config CONFIG_LASH
	bool "lash"
	default n
	select CONFIG_TRUE
	select CONFIG_FALSE
	select CONFIG_TEST
	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.


config CONFIG_MSH
	bool "msh"
	default n
	select CONFIG_TRUE
	select CONFIG_FALSE
	select CONFIG_TEST
	help
	  The minix shell (adds just 30k) is quite complete and handles things
	  like for/do/done, case/esac and all the things you expect a Bourne
	  shell to do.  It is not always pedantically correct about Bourne
	  shell grammar (try running the shell testscript "tests/sh.testcases"
	  on it and compare vs bash) but for most things it works quite well.
	  It also uses only vfork, so it can be used on uClinux systems.

comment "Bourne Shell Options"
	depends on CONFIG_MSH || CONFIG_LASH || CONFIG_HUSH || CONFIG_ASH

config CONFIG_FEATURE_SH_EXTRA_QUIET
	bool "Hide message on interactive shell startup"
	default n
	depends on CONFIG_MSH || CONFIG_LASH || CONFIG_HUSH || CONFIG_ASH
	help
	  Remove the busybox introduction when starting a shell.

config CONFIG_FEATURE_SH_STANDALONE_SHELL
	bool "Standalone shell"
	default n
	depends on CONFIG_MSH || CONFIG_LASH || CONFIG_HUSH || CONFIG_ASH
	help
	  This option causes the selected busybox shell to use busybox applets
	  in preference to executables in the PATH whenever possible.  For
	  example, entering the command 'ifconfig' into the shell would cause
	  busybox to use the ifconfig busybox applet.  Specifying the fully
	  qualified executable name, such as '/sbin/ifconfig' will still
	  execute the /sbin/ifconfig executable on the filesystem.  This option
	  is generally used when creating a statically linked version of busybox
	  for use as a rescue shell, in the event that you screw up your system.

	  Note that this will *also* cause applets to take precedence
	  over shell builtins of the same name.  So turning this on will
	  eliminate any performance gained by turning on the builtin "echo"
	  and "test" commands in ash.

	  Note that when using this option, the shell will attempt to directly
	  run '/bin/busybox'.  If you do not have the busybox binary sitting in
	  that exact location with that exact name, this option will not work at
	  all.

config CONFIG_FEATURE_COMMAND_EDITING
	bool "Command line editing"
	default n
	depends on CONFIG_MSH || CONFIG_LASH || CONFIG_HUSH || CONFIG_ASH
	help
	  Enable command editing in shell.

config CONFIG_FEATURE_COMMAND_EDITING_VI
	bool "vi-style line editing commands"
	default n
	depends on CONFIG_FEATURE_COMMAND_EDITING
	help
	  Enable vi-style line editing in the shell.  This mode can be
	  turned on and off with "set -o vi" and "set +o vi".

config CONFIG_FEATURE_COMMAND_HISTORY
	int "History size"
	default 15
	depends on CONFIG_FEATURE_COMMAND_EDITING
	help
	  Specify command history size in shell.

config CONFIG_FEATURE_COMMAND_SAVEHISTORY
	bool "History saving"
	default n
	depends on CONFIG_ASH && CONFIG_FEATURE_COMMAND_EDITING
	help
	  Enable history saving in ash shell.

config CONFIG_FEATURE_COMMAND_TAB_COMPLETION
	bool "Tab completion"
	default n
	depends on CONFIG_FEATURE_COMMAND_EDITING
	help
	  Enable tab completion in shell.

config CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
	bool "Username completion"
	default n
	depends on CONFIG_FEATURE_COMMAND_TAB_COMPLETION
	help
	  Enable username completion in shell.

config CONFIG_FEATURE_SH_FANCY_PROMPT
	bool "Fancy shell prompts"
	default n
	depends on CONFIG_FEATURE_COMMAND_EDITING
	help
	  Setting this option allows for prompts to use things like \w and
	  \$ and also using escape codes.

endmenu
