From ggrothendieck at gmail.com  Sat Feb 17 15:31:58 2007
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Sat, 17 Feb 2007 09:31:58 -0500
Subject: [Rd] Rscript on Windows
In-Reply-To: <45D6F91C.7060000@stats.uwo.ca>
References: <971536df0701252058i739700dx8f7e02f8be48bf4e@mail.gmail.com>
	<8651815.post@talk.nabble.com>
	<971536df0701260645p68852335n21812456a52733e8@mail.gmail.com>
	<971536df0701290644w51e75315r59120822cffe2819@mail.gmail.com>
	<971536df0702160635m256f5dc0q51c2b5e683a22ede@mail.gmail.com>
	<45D6EF65.1070702@stats.uwo.ca>
	<971536df0702170431j6234dc69n8f43eade71978b84@mail.gmail.com>
	<45D6F91C.7060000@stats.uwo.ca>
Message-ID: <971536df0702170631t2daf5818nefe910db36fc49a@mail.gmail.com>

Surely R has higher standards than that.  How about quality and
completeness of implementation?

Every other major scripting language has implemented this for good reason
and its a glaring omission.

On 2/17/07, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 2/17/2007 7:31 AM, Gabor Grothendieck wrote:
> > I think its best if core mods are done by the core group while others
> > focus on work that can be done external to the core.
>
> Fair enough, but then you also have to accept that the core group is
> going to set the priorities.  As far as I know *nobody* in the core
> group uses the CMD.EXE shell regularly, so changes to accommodate its
> limitations are going to get low priority.
>
> Duncan Murdoch
>
> >
> > Thus, what I have done is to enhance the batchfiles distribution with
> > 3 new batchfiles: Rscript.bat, #Rscript.bat and runR.bat which will be
> > part of the
> > next distribution of batchfiles but can be obtained now, if desired, from the
> > batchfiles svn (with the caveat that they require R 2.5.0).  The batchfiles
> > home page is here:
> >
> >    http://code.google.com/p/batchfiles
> >
> > The source tab on that page gets you to the svn and the links on the right
> > include links to the NEWS and README files which describe the additions,
> > a link to info on the Windows bug that I mentioned and two perl links that
> > describe how this all works in perl which may be a helpful analogous
> > situation.
> > .
> > On 2/17/07, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> >> On 2/16/2007 9:35 AM, Gabor Grothendieck wrote:
> >>> I mentioned this twice already and no one answered;however, I am mentioning
> >>> this a third time since its a serious deficiency.
> >> I agree this would be a reasonable addition, but I wouldn't class it as
> >> a serious deficiency, and I don't plan to work on it myself.
> >>
> >> If you want to put together patches to the trunk code and docs to
> >> implement this I'll review them and possibly commit them.  If you don't
> >> see this as a high enough priority to do that, then I'd suggest doing
> >> what I do:  don't use the CMD.EXE shell.  There are a number of
> >> Unix-like shells available in Windows (Cygwin, MSYS, etc.) that can
> >> handle the #! syntax just fine.  Or just use two files, as you describe
> >> below.
> >>
> >> Duncan Murdoch
> >>
> >>  > The Rscript facility
> >>> that is upcoming in R is useful but on Windows one will often be relegated
> >>> to having two files: a batch file and an R file unless the -x switch
> >>> is implemented
> >>> to allow them to be combined.  This is not a problem on UNIX which supports
> >>> #! but on Windows we need -x.  Every other common scripting language including
> >>> perl, python and ruby supports -x for this purpose.
> >>>
> >>> (The -x flag would start R processing at the first line that begins with #! so
> >>> that prior lines could be Windows batch commands allowing the same file
> >>> to be used as a batch file and an R file.)
> >>>
> >>> Note that there is a bug in Windows which means that if you simply associate
> >>> .R to running R then the result cannot be redirected.  There is a bug
> >>> fix available
> >>> for this but I think we need to be able to run out of the box for something this
> >>> common.
> >>>
> >>>
> >>> On 1/29/07, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> >>>> Haven't got any feedback on this one.
> >>>>
> >>>> Will we be getting a perl/python/ruby style -x switch for Rscript for R 2.5.0?
> >>>>
> >>>> It certainly would give more flexibility to users of Rscript on non-UNIX systems
> >>>> where #! notation is not available.
> >>>>
> >>>> On 1/26/07, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> >>>>> Good idea.  ruby seems to work the same way.  python does too but with
> >>>>> a slightly different definition:
> >>>>>
> >>>>> C:\> ruby -h | findstr strip
> >>>>>  -x[directory]   strip off text before #!ruby line and perhaps cd to directory
> >>>>>
> >>>>> C:\> perl -h | findstr strip
> >>>>>  -x[directory]   strip off text before #!perl line and perhaps cd to directory
> >>>>>
> >>>>> C:\> python -h | findstr skip
> >>>>> -x     : skip first line of source, allowing use of non-Unix forms of #!cmd
> >>>>>
> >>>>>
> >>>>> On 1/26/07, Vladimir Eremeev <wl2776 at gmail.com> wrote:
> >>>>>> ActivePerl has '-x' switch which tells it to skip all lines in the file till
> >>>>>> "#!".
> >>>>>> This allows writing perl scripts in ordinary .bat files.
> >>>>>>
> >>>>>> ?shQuote contains a link with the following perl script example:
> >>>>>> ===8<===
> >>>>>> @echo off
> >>>>>> :: hello.bat
> >>>>>> :: Windows executable Perl script
> >>>>>> :: Note:
> >>>>>> ::   assumes perl.exe is in path
> >>>>>> ::   otherwise, use absolute path
> >>>>>> perl -x -S "%0" %*
> >>>>>> goto end
> >>>>>> #!perl
> >>>>>>
> >>>>>> print "Hello, World!\n";
> >>>>>> __END__
> >>>>>> :end
> >>>>>> :: ------ end of hello.bat ------
> >>>>>>
> >>>>>> Windows Notes:
> >>>>>> " -x " (lower case x): Skip all text until shebang line.
> >>>>>> " -S " (upper case S): Look for script using PATH variable. Special meaning
> >>>>>> in Windows: appends .bat or .cmd if lookup for name fails and name does not
> >>>>>> have either suffix.
> >>>>>> " %* " only on WinNT/2K/XP; use %1 %2 . . . %9 on Win9x/DOS
> >>>>>> ===8<===
> >>>>>>
> >>>>>> I think the simplest way to implement shebang on windows would be embedding
> >>>>>> one more command line switch with similar functionality to perl's '-x'.
> >>>>>>
> >>>>>> --
> >>>>>> View this message in context: http://www.nabble.com/Rscript-on-Windows-tf3120774.html#a8651815
> >>>>>> Sent from the R devel mailing list archive at Nabble.com.
> >>>>>>
> >>> ______________________________________________
> >>> R-devel at r-project.org mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/r-devel
> >>
>
>



[Rd] Rscript on Windows
Gabor Grothendieck