From ggrothendieck at gmail.com  Fri Feb 16 15:35:35 2007
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Fri, 16 Feb 2007 09:35:35 -0500
Subject: [Rd] Rscript on Windows
In-Reply-To: <971536df0701290644w51e75315r59120822cffe2819@mail.gmail.com>
References: <971536df0701252058i739700dx8f7e02f8be48bf4e@mail.gmail.com>
	<8651815.post@talk.nabble.com>
	<971536df0701260645p68852335n21812456a52733e8@mail.gmail.com>
	<971536df0701290644w51e75315r59120822cffe2819@mail.gmail.com>
Message-ID: <971536df0702160635m256f5dc0q51c2b5e683a22ede@mail.gmail.com>

I mentioned this twice already and no one answered;however, I am mentioning
this a third time since its a serious deficiency.   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.
> > >
>



[Rd] Rscript on Windows
Gabor Grothendieck