bash vs. ash vs. postinstall

Eric Blake
Wed Jun 22 13:19:00 GMT 2005

Hash: SHA1

So, with the recent bash vs. ash thread on the main list, I now have a
couple of packaging questions.

Correct me if I'm wrong, but my understanding is that it is currently
fruitless to use a postinstall script to copy bash to /bin/sh.  Even if I
write it as a .bat instead of a .sh, the current setup.exe runs any other
postinstall script that comes alphabetically before bash first, and they
would fail because there is not yet a working /bin/sh (and there are
similar problems with a preremove script removing /bin/sh if other scripts
depend on it).

On the other hand, it could be useful to have a postinstall script that
copies or links bash to sh only if it first determines that the user
hasn't customized some other shell (ash, zsh, ...) to be their default sh.
 Should I wait for a patched setup.exe that either runs /bin/bash rather
than /bin/sh (to guarantee that the postinstall .sh scripts are run with
the same shell, rather than the user's choice of sh), or that can ensure
that postinstall scripts are run in dependency order rather than
alphabetical order?  Or should I just give up and make the bash package
always include /bin/sh, which makes it harder to customize /bin/sh to some
other shell without losing that customization when upgrading bash?

Is it worth packaging bash-3.0-3.tar.bz2 with usr/bin/sh.exe as a hardlink
to bash, to save space on NT machines while Win98 machines will just copy
the file?  Or does this not work with setup.exe?

One other issue is that unless ash is updated simultaneously with bash, I
see potential problems with users losing /bin/sh altogether: bash-3.0-3
overwrites /bin/sh with bash, then uninstalling ash (or upgrading to a new
ash that no longer has /bin/sh) will delete /bin/sh because the old
version had it, without realizing that it is not ash that is getting
deleted.  So we definitely need a new ash package, and it is now a
question of whether it should bundle a shell as /bin/ash or just be empty
(as an end-of-life for ash as maintained by cygwin).  Furthermore, all
other packages that depend on ash because they use /bin/sh will need to
update their dependencies to be on bash.  Fortunately, ash comes before
bash in the alphabet, so a simultaneous upgrade to a new ash and bash
should still end up with a working /bin/sh.

One final note - I would really like bash-3.0-3 to depend on libreadline6,
but I still need Charles Wilson to fold in my readline patches posted

- --
Life is short - so eat dessert first!

Eric Blake   
Version: GnuPG v1.4.0 (Cygwin)
Comment: Public key at
Comment: Using GnuPG with Thunderbird -


More information about the Cygwin-apps mailing list