Package: dash Version: 0.5.3-7 Severity: important Hello,
The dash(1) in Debian stable does not support "set +o" in the manner specified by SUSv3: |+o | Write the current option settings to standard output in a format | that is suitable for reinput to the shell as commands that | achieve the same options settings. (citation from http://www.opengroup.org/onlinepubs/009695399/utilities/set.html) Instead, dash's "set +o" prints the shell's options in a human-readable format. Here is a simple test program that exercises this feature; it works as I believe is required under bash, but not under dash. # Save the shell's options set +o > /tmp/settings-commands set -o | sort > /tmp/settings-before # Change some options. set -v set -f set -x set +o emacs set -o vi # Try to restore our options. . /tmp/settings-commands set -o | sort > /tmp/settings-after # Compare. diff /tmp/settings-before /tmp/settings-after I believe the following small patch adds this feature to dash, and documents it in the manual page: --- src/options.c.orig 2005-11-25 22:17:55.000000000 -0500 +++ src/options.c 2007-12-18 16:37:33.000000000 -0500 @@ -240,10 +240,18 @@ int i; if (name == NULL) { - out1str("Current option settings\n"); - for (i = 0; i < NOPTS; i++) - out1fmt("%-16s%s\n", optnames[i], - optlist[i] ? "on" : "off"); + if (val) { + out1str("Current option settings\n"); + for (i = 0; i < NOPTS; i++) + out1fmt("%-16s%s\n", optnames[i], + optlist[i] ? "on" : "off"); + } else { + for (i = 0; i < NOPTS; i++) + out1fmt("set %s %s\n", + optlist[i] ? "-o" : "+o", + optnames[i]); + + } } else { for (i = 0; i < NOPTS; i++) if (equal(name, optnames[i])) { --- src/dash.1~ 2005-11-25 22:17:55.000000000 -0500 +++ src/dash.1 2007-12-18 16:16:04.000000000 -0500 @@ -1779,6 +1779,11 @@ If options are given, it sets the specified option flags, or clears them as described in the section called .Sx Argument List Processing . +As a special case, if the option is -o or +o and no argument is +supplied, the shell prints the settings of all its options. If the +option is -o, the settings are printed in a human-readable format; if +the option is +o, the settings are printed in a format suitable for +reinput to the shell to affect the same option settings. .Pp The third use of the set command is to set the values of the shell's positional parameters to the specified args. -- System Information: Debian Release: 4.0 APT prefers stable APT policy: (500, 'stable') Architecture: powerpc (ppc) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-5-powerpc Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Versions of packages dash depends on: ii libc6 2.3.6.ds1-13etch2 GNU C Library: Shared libraries dash recommends no packages. -- debconf information: dash/sh: false -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]