My question: On Windows, R's system() command prepends several directories to those in the Windows Path variable.
>From ?system The search path for 'command' may be system-dependent: it will include the R 'bin' directory, the working directory and the Windows system directories before 'PATH'. This shadows any executables on the Path that share a name with, for example, one of the Windows commands. What should I do when I'd really like (the equivalent of) a call passed to system() that would be executed using the same Path that you'd get if working directly at the Windows command line? Is there a recommended workaround for situtations like this? (It _seems_ like it would be handy if system() et al. included an additional argument that optionally disabled the prepending of those extra directories, to give Windows users full control of the path seen by system(). Would adding such an argument have undesirable ramifications?) Motivation and reproducible example: I'm motivated here by a desire to use the function plotdiff() from Paul Murrell's gridGraphics package on my Windows laptop. Getting that to work will require a few code fixes, of which the masking of ImageMagick's convert.exe by that in the C:/Windows/System32 seems to be the most challenging. plotdiff() relies on system2() calls to ImageMagick's 'convert' function, as well as a call to Sys.which(c("convert", "compare")) that tests for the presence of ImageMagick on the Path. Even if ImageMagick is placed early on the Path, though, both calls to Sys.which() and system2() find Windows' convert command (which "Converts FAT volumes to NTFS") rather than ImageMagick's convert. Here's a reproducible example that shows what I'm seeing: ## In R, make a pdf pdf("a.pdf") plot(rnorm(99), col="red") dev.off() ## At Windows cmd command line where convert ## C:\Program Files\ImageMagick-6.8.8-Q16\convert.exe ## C:\Windows\System32\convert.exe convert -density 100x100 a.pdf a.png ## From R ## Unqualified references to convert find the 'wrong' one Sys.which("convert") ## convert ## "C:\\Windows\\system32\\convert.exe" system2("convert", "-density 100x100 a.pdf b.png") ## Invalid Parameter - 100x100 ## Warning message: ## running command '"convert" -density 100x100 a.pdf b.png' had status 4 ## A fully qualified reference does work system2("C:/Program Files/ImageMagick-6.8.8-Q16/convert", "-density 100x100 a.pdf b.png") ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel