in the build log! Avoid using a valuable password if either the
          .config file or the build log may be distributed!
 
+choice
+       bool "/bin/sh"
+       default BR2_SYSTEM_BIN_SH_DASH if !BR2_PACKAGE_BUSYBOX
+       help
+         Select which shell will provide /bin/sh.
+
+# busybox has shells that work on noMMU
+config BR2_SYSTEM_BIN_SH_BUSYBOX
+       bool "busybox' default shell"
+       depends on BR2_PACKAGE_BUSYBOX
+
+config BR2_SYSTEM_BIN_SH_BASH
+       bool "bash"
+       depends on BR2_USE_MMU # bash
+       depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+       select BR2_PACKAGE_BASH
+
+config BR2_SYSTEM_BIN_SH_DASH
+       bool "dash"
+       depends on BR2_USE_MMU # dash
+       depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+       select BR2_PACKAGE_DASH
+
+config BR2_SYSTEM_BIN_SH_ZSH
+       bool "zsh"
+       depends on BR2_USE_MMU # zsh
+       depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+       select BR2_PACKAGE_ZSH
+
+comment "bash, dash, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
+       depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX
+
+config BR2_SYSTEM_BIN_SH_NONE
+       bool "none"
+
+endchoice # /bin/sh
+
+config BR2_SYSTEM_BIN_SH
+       string
+       default "/bin/busybox" if BR2_SYSTEM_BIN_SH_BUSYBOX
+       default "/bin/bash"    if BR2_SYSTEM_BIN_SH_BASH
+       default "/bin/dash"    if BR2_SYSTEM_BIN_SH_DASH
+       default "/bin/zsh"     if BR2_SYSTEM_BIN_SH_ZSH
+
 config BR2_TARGET_GENERIC_GETTY
        bool "Run a getty (login prompt) after boot"
        default y
 
 TARGET_GENERIC_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE))
 TARGET_GENERIC_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD))
 TARGET_GENERIC_PASSWD_METHOD = $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD))
+TARGET_GENERIC_BIN_SH = $(call qstrip,$(BR2_SYSTEM_BIN_SH))
 TARGET_GENERIC_GETTY_PORT = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))
 TARGET_GENERIC_GETTY_BAUDRATE = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))
 TARGET_GENERIC_GETTY_TERM = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM))
 endef
 TARGET_FINALIZE_HOOKS += SYSTEM_ROOT_PASSWD
 
+ifeq ($(BR2_SYSTEM_BIN_SH_NONE),y)
+define SYSTEM_BIN_SH
+       rm -f $(TARGET_DIR)/bin/sh
+endef
+else
+define SYSTEM_BIN_SH
+       ln -sf $(TARGET_GENERIC_BIN_SH) $(TARGET_DIR)/bin/sh
+endef
+endif
+TARGET_FINALIZE_HOOKS += SYSTEM_BIN_SH
+
 ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
 ifeq ($(BR2_PACKAGE_SYSVINIT),y)
 # In sysvinit inittab, the "id" must not be longer than 4 bytes, so we