Ubuntu dash shell and bash shell Dash as/bin/shIn Ubuntu 6.10, the default system shell,/bin/sh, was changed to dash (the Debian almqualified Shell ); previusly it had been bash (the GNU Bourne-Again Shell ). the same change will affect users of Ubuntu 6.06 LTS upgrading directly to Ubuntu 8.04 LTS. this document explains this change and what you shoshould do if you encounter problems. the default login Shell remains bash. Why was this change made? The major reason to switch the default shell was efficiency. bash is an excellent full-featured shell appropriate for interactive use; indeed, it is still the default login shell. however, it is rather large and slow to start up and operate by comparison with dash. A large number of shell instances are started as part of the Ubuntu boot process. rather than change each of them individually to run e Xplicitly under/bin/dash, a change which wowould require significant ongoing maintenance and which wocould be liable to regress if not paid close attention, the Ubuntu core development team felt that it was best simply to change the default shell. the boot speed improvements in Ubuntu 6.10 were often incorrectly attributed to Upstart, which is a fine platform for future development of the init system But in Ubuntu 6.10 was primarily running in System V compatibility mode with only small behavioural changes. these improvements were in fact largely due to the changed/bin/sh. the Debian policy manual has long mandated that "shell scripts specifying '/bin/Sh' as interpreter must only use POSIX features"; in fact, this requirement has been in place since well before the inception of the Ubuntu pr Oject. furthermore, any shell scripts that expected to be portable to other Unix systems, such as the BSDs or Solaris, already honored this requirement. thus, we felt that the compatibility impact of this change wocould be minimal. of course, there have been a certain number of shell scripts written specifically for Linux systems, some of which incorrectly stated that they cocould run with/bin/sh wh En in fact they required/bin/bash, and these scripts will have broken due to this change. we regret this breakage, but feel that the proper way to address it is to make the small changes required to those scripts, discussed later in this document. in the longer term, this will promote a cleaner and more efficient system. (This applies the same philosophy as in C and C ++. programs shoshould be writte N to the standard, and if they use extensions they shoshould declare them; that way it is clear what extensions are in use and they will at least fail with a much better error message if those extensions are not available .) my production system has broken and I just want to get it back up! If you are unlucky enough to have been negatively affected by this change, and only one or two shell scripts are affected, then the quickest way to fix this is to edit these scripts and change the first line to use the correct interpreter. the first line shoshould look something like this (perhaps with some additional options ):#! /Bin/shChange that to the following (you can preserve any options you see ):#! /Bin/bashIn Makefiles, you can set the following variable at the top: SHELL =/bin/basyy the problems are more widespread and you want to change the default system shell back, then you can instruct the package management system to stop installing dash as/bin/sh: sudo dpkg-reconfigure dashBeware that this is a more invasive change, will undo boot speed benefits, and there is even an outside chanc E that there are a few scripts that now depend on some feature of dash that bash does not provide! (We recommend CT the last problem to be rare, as the feature set of dash is largely a subset of that offered by bash, but we mention it for completeness .)