Re: [Rd] R CMD BATCH vs R CMD batch
Dirk Eddelbuettelwrites: > On 28 October 2015 at 21:39, Marius Hofert wrote: > | Out of laziness I just used "R CMD batch" instead of "R CMD BATCH". I > | didn't get an error so didn't think about the consequences... One > | consequence is (at least on Mac OS X 10.11 but probably in more > | generality) that R_BATCH_OPTIONS are ignored, which was kind of fatal > | in my case... I am thus wondering whether it makes sense to either a) > | have R_BATCH_OPTIONS also be respected for "R CMD batch" or b) simply > | not allow "R CMD batch" as a valid command (so requiring to use "R CMD > | BATCH"). Both approaches might be delicate... just wanted to point > | this issue out... > > Same reason we have 'R CMD INSTALL' as there often is /usr/bin/install with > different options ... > > In general 'R CMD foo' will run for any 'foo' in the path: > >edd@max:~$ R CMD date >Wed Oct 28 21:05:01 CDT 2015 >edd@max:~$ So what is R CMD exactly doing in this example? The output is the same if I say only the command (using pwd as otherwise the time has changed...): , | 09:35:03 ~$ R CMD pwd | /Users/rainerkrug | 09:35:37 ~$ R CMD pwd | /Users/rainerkrug | 09:37:44 ~$ pwd | /Users/rainerkrug | 09:37:49 ~$ ` And this happens, except in cases where the foo is defined as a CMD in R (build, ...): , | Commands: | BATCH Run R in batch mode | COMPILE Compile files for use with R | SHLIB Build shared library for dynamic loading | INSTALL Install add-on packages | REMOVE Remove add-on packages | build Build add-on packages | check Check add-on packages | LINKFront-end for creating executable programs | Rprof Post-process R profiling files | Rdconv Convert Rd format to various other formats | Rd2pdf Convert Rd format to PDF | Rd2txt Convert Rd format to pretty text | Stangle Extract S/R code from Sweave documentation | Sweave Process Sweave documentation | Rdiff Diff R output ignoring headers etc | config Obtain configuration information about R | javareconf Update the Java configuration variables | rtags Create Emacs-style tag files from C, R, and Rd files ` Unless I miss something, is this is an inconsistency in R? Rainer > > Dirk -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D):+49 - (0)3 21 21 25 22 44 email: rai...@krugs.de Skype: RMkrug PGP: 0x0F52F982 signature.asc Description: PGP signature __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] R CMD BATCH vs R CMD batch
Deepayan Sarkarwrites: > On Thu, Oct 29, 2015 at 2:09 PM, Rainer M Krug wrote: >> Dirk Eddelbuettel writes: >> >>> On 28 October 2015 at 21:39, Marius Hofert wrote: >>> | Out of laziness I just used "R CMD batch" instead of "R CMD BATCH". I >>> | didn't get an error so didn't think about the consequences... One >>> | consequence is (at least on Mac OS X 10.11 but probably in more >>> | generality) that R_BATCH_OPTIONS are ignored, which was kind of fatal >>> | in my case... I am thus wondering whether it makes sense to either a) >>> | have R_BATCH_OPTIONS also be respected for "R CMD batch" or b) simply >>> | not allow "R CMD batch" as a valid command (so requiring to use "R CMD >>> | BATCH"). Both approaches might be delicate... just wanted to point >>> | this issue out... >>> >>> Same reason we have 'R CMD INSTALL' as there often is /usr/bin/install with >>> different options ... >>> >>> In general 'R CMD foo' will run for any 'foo' in the path: >>> >>>edd@max:~$ R CMD date >>>Wed Oct 28 21:05:01 CDT 2015 >>>edd@max:~$ >> >> So what is R CMD exactly doing in this example? The output is the same if >> I say only the command (using pwd as otherwise the time has changed...): >> >> , >> | 09:35:03 ~$ R CMD pwd >> | /Users/rainerkrug >> | 09:35:37 ~$ R CMD pwd >> | /Users/rainerkrug >> | 09:37:44 ~$ pwd >> | /Users/rainerkrug >> | 09:37:49 ~$ >> ` >> >> And this happens, except in cases where the foo is defined as a CMD in R >> (build, ...): >> >> , >> | Commands: >> | BATCH Run R in batch mode >> | COMPILE Compile files for use with R >> | SHLIB Build shared library for dynamic loading >> | INSTALL Install add-on packages >> | REMOVE Remove add-on packages >> | build Build add-on packages >> | check Check add-on packages >> | LINKFront-end for creating executable programs >> | Rprof Post-process R profiling files >> | Rdconv Convert Rd format to various other formats >> | Rd2pdf Convert Rd format to PDF >> | Rd2txt Convert Rd format to pretty text >> | Stangle Extract S/R code from Sweave documentation >> | Sweave Process Sweave documentation >> | Rdiff Diff R output ignoring headers etc >> | config Obtain configuration information about R >> | javareconf Update the Java configuration variables >> | rtags Create Emacs-style tag files from C, R, and Rd >> files >> ` >> >> Unless I miss something, is this is an inconsistency in R? > > One important difference (not sure if the only one) is that R CMD > defines more environment variables. Compare > > env | grep -i tex > R CMD env | grep -i tex > > So for example > > R CMD pdflatex > > will behave differently from plain pdflatex. Reading Dirk's email again, I think I get the picture of what ~R CMD foo~ is doing: running ~foo~ after doing some initial magic. Out of interest: What is the magic ~R CMD~ is doing? Is it documented anywhere? Rainer > > -Deepayan -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D):+49 - (0)3 21 21 25 22 44 email: rai...@krugs.de Skype: RMkrug PGP: 0x0F52F982 signature.asc Description: PGP signature __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] R CMD BATCH vs R CMD batch
On Thu, Oct 29, 2015 at 2:09 PM, Rainer M Krugwrote: > Dirk Eddelbuettel writes: > >> On 28 October 2015 at 21:39, Marius Hofert wrote: >> | Out of laziness I just used "R CMD batch" instead of "R CMD BATCH". I >> | didn't get an error so didn't think about the consequences... One >> | consequence is (at least on Mac OS X 10.11 but probably in more >> | generality) that R_BATCH_OPTIONS are ignored, which was kind of fatal >> | in my case... I am thus wondering whether it makes sense to either a) >> | have R_BATCH_OPTIONS also be respected for "R CMD batch" or b) simply >> | not allow "R CMD batch" as a valid command (so requiring to use "R CMD >> | BATCH"). Both approaches might be delicate... just wanted to point >> | this issue out... >> >> Same reason we have 'R CMD INSTALL' as there often is /usr/bin/install with >> different options ... >> >> In general 'R CMD foo' will run for any 'foo' in the path: >> >>edd@max:~$ R CMD date >>Wed Oct 28 21:05:01 CDT 2015 >>edd@max:~$ > > So what is R CMD exactly doing in this example? The output is the same if > I say only the command (using pwd as otherwise the time has changed...): > > , > | 09:35:03 ~$ R CMD pwd > | /Users/rainerkrug > | 09:35:37 ~$ R CMD pwd > | /Users/rainerkrug > | 09:37:44 ~$ pwd > | /Users/rainerkrug > | 09:37:49 ~$ > ` > > And this happens, except in cases where the foo is defined as a CMD in R > (build, ...): > > , > | Commands: > | BATCH Run R in batch mode > | COMPILE Compile files for use with R > | SHLIB Build shared library for dynamic loading > | INSTALL Install add-on packages > | REMOVE Remove add-on packages > | build Build add-on packages > | check Check add-on packages > | LINKFront-end for creating executable programs > | Rprof Post-process R profiling files > | Rdconv Convert Rd format to various other formats > | Rd2pdf Convert Rd format to PDF > | Rd2txt Convert Rd format to pretty text > | Stangle Extract S/R code from Sweave documentation > | Sweave Process Sweave documentation > | Rdiff Diff R output ignoring headers etc > | config Obtain configuration information about R > | javareconf Update the Java configuration variables > | rtags Create Emacs-style tag files from C, R, and Rd files > ` > > Unless I miss something, is this is an inconsistency in R? One important difference (not sure if the only one) is that R CMD defines more environment variables. Compare env | grep -i tex R CMD env | grep -i tex So for example R CMD pdflatex will behave differently from plain pdflatex. -Deepayan __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] R CMD BATCH vs R CMD batch
On 29 Oct 2015, at 10:44 , Rainer M Krugwrote: > Out of interest: What is the magic ~R CMD~ is doing? Is it documented > anywhere? R is open source (and shell scripts are considered self-documenting by some) On Unix-alikes, R is a shell script which, if called with 1st argument CMD, calls ${R_HOME}/bin/Rcmd, which is another shell script that ends with case "${1}" in ## this was a separate command prior to 2.10.0 Rd2txt) cmd="${R_HOME}/bin/Rdconv" extra="-t txt" ;; ## removed in 2.15.0 Rd2dvi) echo "R CMD Rd2dvi is defunct: use Rd2pdf instead" exit 1 ;; *) if test -x "${R_HOME}/bin/${1}"; then cmd="${R_HOME}/bin/${1}" else cmd="${1}" fi ;; esac shift exec "${cmd}" ${extra} "${@}" I.e., except for setting up variables and such, R CMD ${foo} essentially looks for ${R_HOME}/bin/${foo} and executes it if it exists and is executable, otherwise it just executes ${foo}. Notice that, somewhat contrary to what Dirk said, this logic works at the mercy of the file system when it comes to case sensitivity. On OSX with the default case-insensitive setup we get Peters-iMac:IBP pd$ R CMD install Error: ERROR: no packages specified which comes from R's package installer, whereas a case-sensitive FS would pick up /usr/bin/install instead. That is just how the "test" shell built-in works: Peters-iMac:~ pd$ test -x `R RHOME`/bin/INSTALL ; echo $? 0 Peters-iMac:~ pd$ test -x `R RHOME`/bin/UNSTALL ; echo $? 1 Peters-iMac:~ pd$ test -x `R RHOME`/bin/install ; echo $? 0 -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd@cbs.dk Priv: pda...@gmail.com __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] R CMD BATCH vs R CMD batch
peter dalgaardwrites: > On 29 Oct 2015, at 10:44 , Rainer M Krug wrote: > >> Out of interest: What is the magic ~R CMD~ is doing? Is it documented >> anywhere? > > > R is open source (and shell scripts are considered self-documenting by > some) True - should have looked in the sources... > > On Unix-alikes, R is a shell script which, if called with 1st argument > CMD, calls ${R_HOME}/bin/Rcmd, which is another shell script that ends > with > > case "${1}" in > ## this was a separate command prior to 2.10.0 > Rd2txt) > cmd="${R_HOME}/bin/Rdconv" > extra="-t txt" > ;; > ## removed in 2.15.0 > Rd2dvi) > echo "R CMD Rd2dvi is defunct: use Rd2pdf instead" > exit 1 > ;; > *) > if test -x "${R_HOME}/bin/${1}"; then > cmd="${R_HOME}/bin/${1}" > else > cmd="${1}" > fi > ;; > esac > shift > > exec "${cmd}" ${extra} "${@}" > > I.e., except for setting up variables and such, R CMD ${foo} > essentially looks for ${R_HOME}/bin/${foo} and executes it if it > exists and is executable, otherwise it just executes ${foo}. Thanks for that detailed explanation of the mechanism - it is much clearer now. And as usual, if one knows how something is happening, it's not "magical" anymore. > > Notice that, somewhat contrary to what Dirk said, this logic works at > the mercy of the file system when it comes to case sensitivity. On OSX > with the default case-insensitive setup we get > > Peters-iMac:IBP pd$ R CMD install > Error: ERROR: no packages specified > > which comes from R's package installer, whereas a case-sensitive FS > would pick up /usr/bin/install instead. That is just how the "test" > shell built-in works: > > Peters-iMac:~ pd$ test -x `R RHOME`/bin/INSTALL ; echo $? > 0 > Peters-iMac:~ pd$ test -x `R RHOME`/bin/UNSTALL ; echo $? > 1 > Peters-iMac:~ pd$ test -x `R RHOME`/bin/install ; echo $? > 0 Yeah - true. I was already starting to wonder as I always was using ~R CMD install~ and it always worked on my Mac. Thanks again, Rainer -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D):+49 - (0)3 21 21 25 22 44 email: rai...@krugs.de Skype: RMkrug PGP: 0x0F52F982 signature.asc Description: PGP signature __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] R CMD BATCH vs R CMD batch
Hi, Out of laziness I just used "R CMD batch" instead of "R CMD BATCH". I didn't get an error so didn't think about the consequences... One consequence is (at least on Mac OS X 10.11 but probably in more generality) that R_BATCH_OPTIONS are ignored, which was kind of fatal in my case... I am thus wondering whether it makes sense to either a) have R_BATCH_OPTIONS also be respected for "R CMD batch" or b) simply not allow "R CMD batch" as a valid command (so requiring to use "R CMD BATCH"). Both approaches might be delicate... just wanted to point this issue out... Cheers, M __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] R CMD BATCH vs R CMD batch
Great, thanks, Dirk. Nice example :-) On Wed, Oct 28, 2015 at 10:05 PM, Dirk Eddelbuettelwrote: > > On 28 October 2015 at 21:39, Marius Hofert wrote: > | Out of laziness I just used "R CMD batch" instead of "R CMD BATCH". I > | didn't get an error so didn't think about the consequences... One > | consequence is (at least on Mac OS X 10.11 but probably in more > | generality) that R_BATCH_OPTIONS are ignored, which was kind of fatal > | in my case... I am thus wondering whether it makes sense to either a) > | have R_BATCH_OPTIONS also be respected for "R CMD batch" or b) simply > | not allow "R CMD batch" as a valid command (so requiring to use "R CMD > | BATCH"). Both approaches might be delicate... just wanted to point > | this issue out... > > Same reason we have 'R CMD INSTALL' as there often is /usr/bin/install with > different options ... > > In general 'R CMD foo' will run for any 'foo' in the path: > >edd@max:~$ R CMD date >Wed Oct 28 21:05:01 CDT 2015 >edd@max:~$ > > Dirk > > -- > http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] R CMD BATCH vs R CMD batch
On 28 October 2015 at 21:39, Marius Hofert wrote: | Out of laziness I just used "R CMD batch" instead of "R CMD BATCH". I | didn't get an error so didn't think about the consequences... One | consequence is (at least on Mac OS X 10.11 but probably in more | generality) that R_BATCH_OPTIONS are ignored, which was kind of fatal | in my case... I am thus wondering whether it makes sense to either a) | have R_BATCH_OPTIONS also be respected for "R CMD batch" or b) simply | not allow "R CMD batch" as a valid command (so requiring to use "R CMD | BATCH"). Both approaches might be delicate... just wanted to point | this issue out... Same reason we have 'R CMD INSTALL' as there often is /usr/bin/install with different options ... In general 'R CMD foo' will run for any 'foo' in the path: edd@max:~$ R CMD date Wed Oct 28 21:05:01 CDT 2015 edd@max:~$ Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel