> On Oct 24, 2014, at 7:36 AM, peter dalgaard <[email protected]> wrote: > > > On 24 Oct 2014, at 12:55 , Duncan Murdoch <[email protected]> wrote: > >> On 24/10/2014, 1:37 AM, Simon Urbanek wrote: >>> >>> On Oct 24, 2014, at 12:22 AM, Emma Sherratt <[email protected]> wrote: >>> >>>> Dear Mac R community, >>>> >>>> I wonder if anyone else has come across this issue. After installing the >>>> new Mac OS10.10 Yosemite, I am now having a strange problem. >>>> >>>> I'm trying to use movie3d and run similar functions based on this I have >>>> written myself. >>>> >>>> Specifically, when I run >>>> >>>>> system("convert --version") >>>> sh: convert: command not found >>>> >>>> yet, it is not a path issue. >>>>> Sys.getenv("PATH") >>>> [1] >>>> "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin: >>>> */opt/ImageMagick/bin*:/usr/texbin" >>>> >>> >>> It is, because Yosemite ignores PATH for processes started from a GUI >>> application. You will see if you run >>> system("echo $PATH") >>> >>> You have to use full paths in Yosemite for anything that is not on the >>> "sanctioned" PATH -- or use R from the shell. >> >> What is the best way to find the full path to a command there, since >> Sys.which() sees the same PATH as system() does? >> >> Alternatively, how do you modify the PATH that system() sees? >>
>From what I've read you can't from the parent process. You have to set it in >the child process once it's created - that's how some people have worked >around it. >> Duncan Murdoch >> >> _______________________________________________ >> R-SIG-Mac mailing list >> [email protected] >> https://stat.ethz.ch/mailman/listinfo/r-sig-mac > > > Disclaimer: I'm at the office computer right now, still on Mavericks. > > In my limited experimentation, I found that you can pass the PATH explicitly > as in > > path <- Sys.getenv("PATH") > cmd <- paste("PATH=", path, "; which pdflatex") > system(cmd) > > I don't recall needing to export PATH, and there could be complications with > the shell flavour (sh, ash, bash, zsh, ...). Also, I think it wants to be two > commands with the intervening semicolon, but it might work without it. > Anyways, give it a try. > I think it's better without so it is inherited implicitly, i.e. system(paste0("PATH=",shQuote(Sys.getenv("PATH"))," which pdflatex")) As said above, it has to happen in the child process, that's why this works. Since this is a security measure, I'm not sure that we want to work around it in R. Moreover, the PATH in LS apps has always been different, so you had to alway exert some effort to make it match - in that sense it's not new, just more complicated ;) However, I can see that it surprises people, so I'm not sure what to do about it. Cheers, Simon > -- > Peter Dalgaard, Professor, > Center for Statistics, Copenhagen Business School > Solbjerg Plads 3, 2000 Frederiksberg, Denmark > Phone: (+45)38153501 > Email: [email protected] Priv: [email protected] > > > > > > > > _______________________________________________ R-SIG-Mac mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-sig-mac
