[Rd] Buig in bin/R script (PR#9375)

gml4410 at ggr.co.uk gml4410 at ggr.co.uk
Tue Nov 21 16:22:05 CET 2006

Prof Brian Ripley wrote:
>> Changes to the bin/R front-end interlude script at 2.4.0 (cf: 2.2.0) 
>> have broken R on (Dec/Compaq/HP) OSF1.
> This was not changed in 2.4.0, and indeed 2.2.0's bin/R used "${@}" in 
> one place.

    The 2.2.0 usage only came into play if CMD was on the command line, 
and there would then be a following parameter, so "${@}" contained 

    At 2.4.0 this has been appended to 2 further lines in circumstances 
where it can easily be empty.

>> The fix is to edit src/scripts//R.sh.in to use the correct, original 
>> Bourne shell syntax:
> Surely this is an idiosyncracy (aka 'buig') of your OS rather than being 
> 'correct'?  The POSIX definition is
> [http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_02]
> Note the declarative 'shall' there.

    Agreed, but that definition was post-dated.  Many systems behaved 
differently before that was written.

> Further, Solaris has a genuine Bourne shell from the AT&T source code 
> base, and it is both documented and behaves as this quotation.

    I'll agree it works (Sol8, Sol9 and Sol10), but it isn't documented 
in the sh man page.

> Perhaps we need a workaround conditional on 'HAVE_OSF_BROKEN_SH', but I 
> am not at all keen to complicate simple POSIX-compliant code 
> unconditionally.

    Using ${1+"$@"} is POSIX compliant also, and has the advantage of 
working everywhere.  See:


More information about the R-devel mailing list