X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=shell%2FConfig.src;h=81c4ec87450d474d2e971daf761d59985060f23f;hb=419db0391e47444dd12fb052613fd415694d04f0;hp=234d05367fdd0e8a68130381be3232fc698d2705;hpb=2f32bf8be63f70125049402ba43101d8c6083d46;p=oweals%2Fbusybox.git diff --git a/shell/Config.src b/shell/Config.src index 234d05367..81c4ec874 100644 --- a/shell/Config.src +++ b/shell/Config.src @@ -5,392 +5,162 @@ menu "Shells" + choice prompt "Choose which shell is aliased to 'sh' name" - default FEATURE_SH_IS_ASH + default SH_IS_ASH help - Choose which shell you want to be executed by 'sh' alias. - The ash shell is the most bash compatible and full featured one. + Choose which shell you want to be executed by 'sh' alias. + The ash shell is the most bash compatible and full featured one. -config FEATURE_SH_IS_ASH - select ASH - bool "ash" +# note: cannot use "select ASH" here, it breaks "make allnoconfig" +config SH_IS_ASH depends on !NOMMU + bool "ash" + help + Choose ash to be the shell executed by 'sh' name. + The ash code will be built into busybox. If you don't select + "ash" choice (CONFIG_ASH), this shell may only be invoked by + the name 'sh' (and not 'ash'). -config FEATURE_SH_IS_HUSH - select HUSH +config SH_IS_HUSH bool "hush" + help + Choose hush to be the shell executed by 'sh' name. + The hush code will be built into busybox. If you don't select + "hush" choice (CONFIG_HUSH), this shell may only be invoked by + the name 'sh' (and not 'hush'). -config FEATURE_SH_IS_NONE +config SH_IS_NONE bool "none" endchoice choice prompt "Choose which shell is aliased to 'bash' name" - default FEATURE_BASH_IS_NONE + default BASH_IS_NONE help - Choose which shell you want to be executed by 'bash' alias. - The ash shell is the most bash compatible and full featured one. + Choose which shell you want to be executed by 'bash' alias. + The ash shell is the most bash compatible and full featured one, + although compatibility is far from being complete. - Note that selecting this option does not switch on any bash - compatibility code. It merely makes it possible to install - /bin/bash (sym)link and run scripts which start with - #!/bin/bash line. + Note that selecting this option does not switch on any bash + compatibility code. It merely makes it possible to install + /bin/bash (sym)link and run scripts which start with + #!/bin/bash line. - Many systems use it in scripts which use bash-specific features, - even simple ones like $RANDOM. Without this option, busybox - can't be used for running them because it won't recongnize - "bash" as a supported applet name. + Many systems use it in scripts which use bash-specific features, + even simple ones like $RANDOM. Without this option, busybox + can't be used for running them because it won't recongnize + "bash" as a supported applet name. -config FEATURE_BASH_IS_ASH - select ASH - bool "ash" +config BASH_IS_ASH depends on !NOMMU - -config FEATURE_BASH_IS_HUSH - select HUSH - bool "hush" - -config FEATURE_BASH_IS_NONE - bool "none" - -endchoice - -config ASH bool "ash" - default y - depends on !NOMMU - 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. - -config ASH_BASH_COMPAT - bool "bash-compatible extensions" - default y - depends on ASH - help - Enable bash-compatible extensions. - -config ASH_JOB_CONTROL - bool "Job control" - default y - depends on ASH - help - Enable job control in the ash shell. - -config ASH_ALIAS - bool "alias support" - default y - depends on ASH - help - Enable alias support in the ash shell. - -config ASH_GETOPTS - bool "Builtin getopt to parse positional parameters" - default y - depends on ASH help - Enable getopts builtin in the ash shell. + Choose ash to be the shell executed by 'bash' name. + The ash code will be built into busybox. If you don't select + "ash" choice (CONFIG_ASH), this shell may only be invoked by + the name 'bash' (and not 'ash'). -config ASH_BUILTIN_ECHO - bool "Builtin version of 'echo'" - default y - depends on ASH - help - Enable support for echo, builtin to ash. - -config ASH_BUILTIN_PRINTF - bool "Builtin version of 'printf'" - default y - depends on ASH - help - Enable support for printf, builtin to ash. - -config ASH_BUILTIN_TEST - bool "Builtin version of 'test'" - default y - depends on ASH - help - Enable support for test, builtin to ash. - -config ASH_CMDCMD - bool "'command' command to override shell builtins" - default y - depends on 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 ASH_MAIL - bool "Check for new mail on interactive shells" - default n - depends on ASH - help - Enable "check for new mail" in the ash shell. - -config ASH_OPTIMIZE_FOR_SIZE - bool "Optimize for size instead of speed" - default y - depends on ASH - help - Compile ash for reduced size at the price of speed. - -config ASH_RANDOM_SUPPORT - bool "Pseudorandom generator and $RANDOM variable" - default y - depends on 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" the generator will switch off and this - variable will no longer have special treatment. - -config ASH_EXPAND_PRMT - bool "Expand prompt string" - default y - depends on ASH - help - "PS#" may contain volatile content, such as backquote commands. - This option recreates the prompt string from the environment - variable each time it is displayed. - -config HUSH +config BASH_IS_HUSH bool "hush" - default y help - hush is a small shell (22k). It handles the normal flow control - constructs such as if/then/elif/else/fi, for/in/do/done, while loops, - case/esac. Redirections, here documents, $((arithmetic)) - and functions are supported. - - It will compile and work on no-mmu systems. + Choose hush to be the shell executed by 'bash' name. + The hush code will be built into busybox. If you don't select + "hush" choice (CONFIG_HUSH), this shell may only be invoked by + the name 'bash' (and not 'hush'). - It does not handle select, aliases, brace expansion, - tilde expansion, &>file and >&file redirection of stdout+stderr. - -config HUSH_BASH_COMPAT - bool "bash-compatible extensions" - default y - depends on HUSH - help - Enable bash-compatible extensions. - -config HUSH_HELP - bool "help builtin" - default y - depends on HUSH - help - Enable help builtin in hush. Code size + ~1 kbyte. - -config HUSH_INTERACTIVE - bool "Interactive mode" - default y - depends on HUSH - help - Enable interactive mode (prompt and command editing). - Without this, hush simply reads and executes commands - from stdin just like a shell script from a file. - No prompt, no PS1/PS2 magic shell variables. - -config HUSH_JOB - bool "Job control" - default y - depends on HUSH_INTERACTIVE - help - Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current - command (not entire shell), fg/bg builtins work. Without this option, - "cmd &" still works by simply spawning a process and immediately - prompting for next command (or executing next command in a script), - but no separate process group is formed. - -config HUSH_TICK - bool "Process substitution" - default y - depends on HUSH - help - Enable process substitution `command` and $(command) in hush. - -config HUSH_IF - bool "Support if/then/elif/else/fi" - default y - depends on HUSH - help - Enable if/then/elif/else/fi in hush. - -config HUSH_LOOPS - bool "Support for, while and until loops" - default y - depends on HUSH - help - Enable for, while and until loops in hush. - -config HUSH_CASE - bool "Support case ... esac statement" - default y - depends on HUSH - help - Enable case ... esac statement in hush. +400 bytes. - -config HUSH_FUNCTIONS - bool "Support funcname() { commands; } syntax" - default y - depends on HUSH - help - Enable support for shell functions in hush. +800 bytes. +config BASH_IS_NONE + bool "none" -config HUSH_LOCAL - bool "Support local builtin" - default y - depends on HUSH_FUNCTIONS - help - Enable support for local variables in functions. +endchoice -config HUSH_EXPORT_N - bool "Support export '-n' option" - default y - depends on HUSH - help - Enable support for export '-n' option in hush. It is a bash extension. -config HUSH_RANDOM_SUPPORT - bool "Pseudorandom generator and $RANDOM variable" - default y - depends on HUSH - help - Enable pseudorandom generator and dynamic variable "$RANDOM". - Each read of "$RANDOM" will generate a new pseudorandom value. +INSERT -config LASH - bool "lash (deprecated: aliased to hush)" - default n - select HUSH - help - lash is deprecated and will be removed, please migrate to hush. -config MSH - bool "msh (deprecated: please use hush)" - default n - select HUSH - help - msh is deprecated and will be removed, please migrate to hush. - If there is a feature msh has but hush does not, please let us know. +comment "Options common to all shells" +if ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH -# 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 uses only vfork, so it can be used on uClinux systems. - - -config SH_MATH_SUPPORT +config FEATURE_SH_MATH bool "POSIX math support" default y - depends on ASH || HUSH + depends on ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH help - Enable math support in the shell via $((...)) syntax. + Enable math support in the shell via $((...)) syntax. -config SH_MATH_SUPPORT_64 +config FEATURE_SH_MATH_64 bool "Extend POSIX math support to 64 bit" default y - depends on SH_MATH_SUPPORT + depends on FEATURE_SH_MATH help - Enable 64-bit math support in the shell. This will make the shell - slightly larger, but will allow computation with very large numbers. - This is not in POSIX, so do not rely on this in portable code. + Enable 64-bit math support in the shell. This will make the shell + slightly larger, but will allow computation with very large numbers. + This is not in POSIX, so do not rely on this in portable code. config FEATURE_SH_EXTRA_QUIET bool "Hide message on interactive shell startup" default y - depends on HUSH || ASH + depends on ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH help - Remove the busybox introduction when starting a shell. + Remove the busybox introduction when starting a shell. config FEATURE_SH_STANDALONE bool "Standalone shell" default n - depends on (HUSH || ASH) && FEATURE_PREFER_APPLETS + depends on ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH help - This option causes busybox shells 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. - - This is implemented by re-execing /proc/self/exe (typically) - with right parameters. Some selected applets ("NOFORK" applets) - can even be executed without creating new process. - Instead, busybox will call _main() internally. - - However, this causes problems in chroot jails without mounted /proc - and with ps/top (command name can be shown as 'exe' for applets - started this way). -# untrue? -# 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. -# untrue? -# 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. + This option causes busybox shells 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. + + This is implemented by re-execing /proc/self/exe (typically) + with right parameters. + + However, there are drawbacks: it is problematic in chroot jails + without mounted /proc, and ps/top may show command name as 'exe' + for applets started this way. config FEATURE_SH_NOFORK bool "Run 'nofork' applets directly" default n - depends on (HUSH || ASH) && FEATURE_PREFER_APPLETS + depends on ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH help - This option causes busybox shells [currently only ash] - to not execute typical fork/exec/wait sequence, but call _main - directly, if possible. (Sometimes it is not possible: for example, - this is not possible in pipes). + This option causes busybox shells to not execute typical + fork/exec/wait sequence, but call _main directly, + if possible. (Sometimes it is not possible: for example, + this is not possible in pipes). - This will be done only for some applets (those which are marked - NOFORK in include/applets.h). + This will be done only for some applets (those which are marked + NOFORK in include/applets.h). - This may significantly speed up some shell scripts. + This may significantly speed up some shell scripts. - This feature is relatively new. Use with care. + This feature is relatively new. Use with care. Report bugs + to project mailing list. -config CTTYHACK - bool "cttyhack" +config FEATURE_SH_READ_FRAC + bool "read -t N.NNN support (+110 bytes)" default y + depends on ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH help - One common problem reported on the mailing list is "can't access tty; - job control turned off" error message which typically appears when - one tries to use shell with stdin/stdout opened to /dev/console. - This device is special - it cannot be a controlling tty. - - Proper solution is to use correct device instead of /dev/console. - - cttyhack provides "quick and dirty" solution to this problem. - It analyzes stdin with various ioctls, trying to determine whether - it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line). - If it detects one, it closes stdin/out/err and reopens that device. - Then it executes given program. Opening the device will make - that device a controlling tty. This may require cttyhack - to be a session leader. + Enable support for fractional second timeout in read builtin. - Example for /etc/inittab (for busybox init): - - ::respawn:/bin/cttyhack /bin/sh - - Giving controlling tty to shell running with PID 1: - - $ exec cttyhack sh - - Starting an interactive shell from boot shell script: +config FEATURE_SH_HISTFILESIZE + bool "Use $HISTFILESIZE" + default y + depends on ASH || HUSH || SH_IS_ASH || BASH_IS_ASH || SH_IS_HUSH || BASH_IS_HUSH + help + This option makes busybox shells to use $HISTFILESIZE variable + to set shell history size. Note that its max value is capped + by "History size" setting in library tuning section. - setsid cttyhack sh +endif # Options common to all shells endmenu