[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Public service announcement about Policy 10.4

This is a public service announcement about Debian Policy section 10.4,
which states in part:

  The standard shell interpreter `/bin/sh' can be a symbolic link to any
  POSIX compatible shell, if `echo -n' does not generate a newline.[1]
  Thus, shell scripts specifying `/bin/sh' as interpreter should only
  use POSIX features.  If a script requires non-POSIX features from the
  shell interpreter, the appropriate shell must be specified in the
  first line of the script (e.g., `#!/bin/bash') and the package must
  depend on the package providing the shell (unless the shell package is
  marked "Essential", as in the case of `bash').

I have found no less than four packages which break with /bin/posh
as /bin/sh, including one that refuses to be removed because of its
brokenness.  I am expecting many more.

I suggest that all maintainers test their packages with /bin/sh
as /bin/posh as well as _POSIX2_VERSION=200112 in their configuration
files.  Please be aware that due to debconf brokenness that is caused by
non-POSIX features, if you do set /bin/sh as /bin/posh, you may not be
able to undo this without manually patching debconf or waiting for it to
be fixed.  Bugs have already been filed about this (not by me).

I would like to point out that the following are not POSIX features:

test -o
test -a

You may fix these bugs by specifying "#!/bin/bash" as the first line of
your script, or you may simply remove these non-POSIX extensions.

I would also like to point out that these bugs are severity not less
than important, so you may want to fix these bugs if they occur in your
packages, even if they have not been filed in the BTS yet.

This ends the public service announcement.  Thank you for your attention
to this matter.  Have a nice day.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply to: