Hi Mike, > Please define what a non-standard extension shell is.
Something that isn't in POSIX's sh. > My point is that #!/bin/sh is the name of a shell command that is > not documented. In fact it does not exist anymore. There are many shells that aim to provide all of POSIX's sh's behaviour. The Heirloom Bourne Shell is one, http://heirloom.sourceforge.net/sh.html. bash has a --posix and also changes behaviour when invoked as `sh'. Write to the POSIX standard, `#!' to /bin/sh, and the script will run because all sane systems arrange for a suitable shell to run them. That the shell used, e.g. dash, can do more does not mean that `#! /bin/dash' should be used when the script has no dash-dependencies as it won't then run on a system without dash. If dash doesn't implement a bit of POSIX sh then that's a problem for dash and the distro that uses it for sh; either it gets fixed or the distro works around it, e.g. a Debian patch to groff. > How is someone attempting to understand a #!/bin/sh script to know > what the writer intended if there is no documented way to interpret > the syntax? http://pubs.opengroup.org/onlinepubs/000095399/utilities/sh.html is a good jumping-off point. > All my shells start with #!/bin/bash or #!/bin/ksh (depending on > how long ago I wrote them -- some are decades old). That way whoever > reads them knows what standard I was writing to. My *bash* scripts also start with `#! /bin/bash'. > I'm suggesting that all the groff scripts should point to the shell > the writer was using when they were written. > > The shell is very unlikely to have been /bin/sh . I should not force dash onto others when I've written to the POSIX /bin/sh subset. Cheers, Ralph.