busybox/shell/Config.in
<<
>>
Prefs
   1#
   2# For a description of the syntax of this configuration file,
   3# see scripts/kbuild/config-language.txt.
   4#
   5
   6menu "Shells"
   7
   8choice
   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
  15config FEATURE_SH_IS_ASH
  16        select ASH
  17        bool "ash"
  18        depends on !NOMMU
  19
  20config FEATURE_SH_IS_HUSH
  21        select HUSH
  22        bool "hush"
  23
  24####config FEATURE_SH_IS_LASH
  25####    select LASH
  26####    bool "lash"
  27
  28####config FEATURE_SH_IS_MSH
  29####    select MSH
  30####    bool "msh"
  31
  32config FEATURE_SH_IS_NONE
  33        bool "none"
  34
  35endchoice
  36
  37config ASH
  38        bool "ash"
  39        default n
  40        depends on !NOMMU
  41        help
  42          Tha 'ash' shell adds about 60k in the default configuration and is
  43          the most complete and most pedantically correct shell included with
  44          busybox. This shell is actually a derivative of the Debian 'dash'
  45          shell (by Herbert Xu), which was created by porting the 'ash' shell
  46          (written by Kenneth Almquist) from NetBSD.
  47
  48config ASH_BASH_COMPAT
  49        bool "bash-compatible extensions"
  50        default y
  51        depends on ASH
  52        help
  53          Enable bash-compatible extensions.
  54
  55config ASH_JOB_CONTROL
  56        bool "Job control"
  57        default y
  58        depends on ASH
  59        help
  60          Enable job control in the ash shell.
  61
  62config ASH_ALIAS
  63        bool "alias support"
  64        default y
  65        depends on ASH
  66        help
  67          Enable alias support in the ash shell.
  68
  69config ASH_GETOPTS
  70        bool "Builtin getopt to parse positional parameters"
  71        default n
  72        depends on ASH
  73        help
  74          Enable getopts builtin in the ash shell.
  75
  76config ASH_BUILTIN_ECHO
  77        bool "Builtin version of 'echo'"
  78        default y
  79        depends on ASH
  80        help
  81          Enable support for echo, builtin to ash.
  82
  83config ASH_BUILTIN_PRINTF
  84        bool "Builtin version of 'printf'"
  85        default y
  86        depends on ASH
  87        help
  88          Enable support for printf, builtin to ash.
  89
  90config ASH_BUILTIN_TEST
  91        bool "Builtin version of 'test'"
  92        default y
  93        depends on ASH
  94        help
  95          Enable support for test, builtin to ash.
  96
  97config ASH_CMDCMD
  98        bool "'command' command to override shell builtins"
  99        default n
 100        depends on ASH
 101        help
 102          Enable support for the ash 'command' builtin, which allows
 103          you to run the specified command with the specified arguments,
 104          even when there is an ash builtin command with the same name.
 105
 106config ASH_MAIL
 107        bool "Check for new mail on interactive shells"
 108        default y
 109        depends on ASH
 110        help
 111          Enable "check for new mail" in the ash shell.
 112
 113config ASH_OPTIMIZE_FOR_SIZE
 114        bool "Optimize for size instead of speed"
 115        default y
 116        depends on ASH
 117        help
 118          Compile ash for reduced size at the price of speed.
 119
 120config ASH_RANDOM_SUPPORT
 121        bool "Pseudorandom generator and $RANDOM variable"
 122        default n
 123        depends on ASH
 124        help
 125          Enable pseudorandom generator and dynamic variable "$RANDOM".
 126          Each read of "$RANDOM" will generate a new pseudorandom value.
 127          You can reset the generator by using a specified start value.
 128          After "unset RANDOM" the generator will switch off and this
 129          variable will no longer have special treatment.
 130
 131config ASH_EXPAND_PRMT
 132        bool "Expand prompt string"
 133        default n
 134        depends on ASH
 135        help
 136          "PS#" may contain volatile content, such as backquote commands.
 137          This option recreates the prompt string from the environment
 138          variable each time it is displayed.
 139
 140config HUSH
 141        bool "hush"
 142        default n
 143        help
 144          hush is a small shell (22k). It handles the normal flow control
 145          constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
 146          case/esac. Redirections, here documents, $((arithmetic))
 147          and functions are supported.
 148
 149          It will compile and work on no-mmu systems.
 150
 151          It does not handle select, aliases, brace expansion,
 152          tilde expansion, &>file and >&file redirection of stdout+stderr.
 153
 154config HUSH_BASH_COMPAT
 155        bool "bash-compatible extensions"
 156        default y
 157        depends on HUSH
 158        help
 159          Enable bash-compatible extensions.
 160
 161config HUSH_HELP
 162        bool "help builtin"
 163        default n
 164        depends on HUSH
 165        help
 166          Enable help builtin in hush. Code size + ~1 kbyte.
 167
 168config HUSH_INTERACTIVE
 169        bool "Interactive mode"
 170        default y
 171        depends on HUSH
 172        help
 173          Enable interactive mode (prompt and command editing).
 174          Without this, hush simply reads and executes commands
 175          from stdin just like a shell script from a file.
 176          No prompt, no PS1/PS2 magic shell variables.
 177
 178config HUSH_JOB
 179        bool "Job control"
 180        default n
 181        depends on HUSH_INTERACTIVE
 182        help
 183          Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
 184          command (not entire shell), fg/bg builtins work. Without this option,
 185          "cmd &" still works by simply spawning a process and immediately
 186          prompting for next command (or executing next command in a script),
 187          but no separate process group is formed.
 188
 189config HUSH_TICK
 190        bool "Process substitution"
 191        default n
 192        depends on HUSH
 193        help
 194          Enable process substitution `command` and $(command) in hush.
 195
 196config HUSH_IF
 197        bool "Support if/then/elif/else/fi"
 198        default n
 199        depends on HUSH
 200        help
 201          Enable if/then/elif/else/fi in hush.
 202
 203config HUSH_LOOPS
 204        bool "Support for, while and until loops"
 205        default n
 206        depends on HUSH
 207        help
 208          Enable for, while and until loops in hush.
 209
 210config HUSH_CASE
 211        bool "Support case ... esac statement"
 212        default n
 213        depends on HUSH
 214        help
 215          Enable case ... esac statement in hush. +400 bytes.
 216
 217config HUSH_FUNCTIONS
 218        bool "Support funcname() { commands; } syntax"
 219        default n
 220        depends on HUSH
 221        help
 222          Enable support for shell functions in hush. +800 bytes.
 223
 224config HUSH_LOCAL
 225        bool "Support local builtin"
 226        default n
 227        depends on HUSH_FUNCTIONS
 228        help
 229          Enable support for local variables in functions.
 230
 231config HUSH_EXPORT_N
 232        bool "Support export '-n' option"
 233        default n
 234        depends on HUSH
 235        help
 236          Enable support for export '-n' option in hush. It is a bash extension.
 237
 238config HUSH_RANDOM_SUPPORT
 239        bool "Pseudorandom generator and $RANDOM variable"
 240        default n
 241        depends on HUSH
 242        help
 243          Enable pseudorandom generator and dynamic variable "$RANDOM".
 244          Each read of "$RANDOM" will generate a new pseudorandom value.
 245
 246config LASH
 247        bool "lash (deprecated: aliased to hush)"
 248        default n
 249        select HUSH
 250        help
 251          lash is deprecated and will be removed, please migrate to hush.
 252
 253config MSH
 254        bool "msh (deprecated: please use hush)"
 255        default n
 256        select HUSH
 257        help
 258          msh is deprecated and will be removed, please migrate to hush.
 259          If there is a feature msh has but hush does not, please let us know.
 260
 261#         The minix shell (adds just 30k) is quite complete and handles things
 262#         like for/do/done, case/esac and all the things you expect a Bourne
 263#         shell to do. It is not always pedantically correct about Bourne
 264#         shell grammar (try running the shell testscript "tests/sh.testcases"
 265#         on it and compare vs bash) but for most things it works quite well.
 266#         It uses only vfork, so it can be used on uClinux systems.
 267
 268
 269config SH_MATH_SUPPORT
 270        bool "POSIX math support"
 271        default y
 272        depends on ASH || HUSH
 273        help
 274          Enable math support in the shell via $((...)) syntax.
 275
 276config SH_MATH_SUPPORT_64
 277        bool "Extend POSIX math support to 64 bit"
 278        default n
 279        depends on SH_MATH_SUPPORT
 280        help
 281          Enable 64-bit math support in the shell. This will make the shell
 282          slightly larger, but will allow computation with very large numbers.
 283          This is not in POSIX, so do not rely on this in portable code.
 284
 285config FEATURE_SH_EXTRA_QUIET
 286        bool "Hide message on interactive shell startup"
 287        default n
 288        depends on MSH || LASH || HUSH || ASH
 289        help
 290          Remove the busybox introduction when starting a shell.
 291
 292config FEATURE_SH_STANDALONE
 293        bool "Standalone shell"
 294        default n
 295        depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
 296        help
 297          This option causes busybox shells to use busybox applets
 298          in preference to executables in the PATH whenever possible. For
 299          example, entering the command 'ifconfig' into the shell would cause
 300          busybox to use the ifconfig busybox applet. Specifying the fully
 301          qualified executable name, such as '/sbin/ifconfig' will still
 302          execute the /sbin/ifconfig executable on the filesystem. This option
 303          is generally used when creating a statically linked version of busybox
 304          for use as a rescue shell, in the event that you screw up your system.
 305
 306          This is implemented by re-execing /proc/self/exe (typically)
 307          with right parameters. Some selected applets ("NOFORK" applets)
 308          can even be executed without creating new process.
 309          Instead, busybox will call <applet>_main() internally.
 310
 311          However, this causes problems in chroot jails without mounted /proc
 312          and with ps/top (command name can be shown as 'exe' for applets
 313          started this way).
 314# untrue?
 315#         Note that this will *also* cause applets to take precedence
 316#         over shell builtins of the same name. So turning this on will
 317#         eliminate any performance gained by turning on the builtin "echo"
 318#         and "test" commands in ash.
 319# untrue?
 320#         Note that when using this option, the shell will attempt to directly
 321#         run '/bin/busybox'. If you do not have the busybox binary sitting in
 322#         that exact location with that exact name, this option will not work at
 323#         all.
 324
 325config FEATURE_SH_NOFORK
 326        bool "Run 'nofork' applets directly"
 327        default n
 328        depends on (MSH || LASH || HUSH || ASH) && FEATURE_PREFER_APPLETS
 329        help
 330          This option causes busybox shells [currently only ash]
 331          to not execute typical fork/exec/wait sequence, but call <applet>_main
 332          directly, if possible. (Sometimes it is not possible: for example,
 333          this is not possible in pipes).
 334
 335          This will be done only for some applets (those which are marked
 336          NOFORK in include/applets.h).
 337
 338          This may significantly speed up some shell scripts.
 339
 340          This feature is relatively new. Use with care.
 341
 342config CTTYHACK
 343        bool "cttyhack"
 344        default n
 345        help
 346          One common problem reported on the mailing list is "can't access tty;
 347          job control turned off" error message which typically appears when
 348          one tries to use shell with stdin/stdout opened to /dev/console.
 349          This device is special - it cannot be a controlling tty.
 350
 351          Proper solution is to use correct device instead of /dev/console.
 352
 353          cttyhack provides "quick and dirty" solution to this problem.
 354          It analyzes stdin with various ioctls, trying to determine whether
 355          it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
 356          If it detects one, it closes stdin/out/err and reopens that device.
 357          Then it executes given program. Usage example for /etc/inittab
 358          (for busybox init):
 359
 360          ::respawn:/bin/cttyhack /bin/sh
 361
 362endmenu
 363