On 24/10/2014, 9:03 AM, Simon Urbanek wrote: > >> On Oct 24, 2014, at 7:36 AM, peter dalgaard <pda...@gmail.com> wrote: >> >> >> On 24 Oct 2014, at 12:55 , Duncan Murdoch <murdoch.dun...@gmail.com> wrote: >> >>> On 24/10/2014, 1:37 AM, Simon Urbanek wrote: >>>> >>>> On Oct 24, 2014, at 12:22 AM, Emma Sherratt <emma.sherr...@gmail.com> >>>> 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.
What about doing it from outside the process? How would I (running as superuser) change the path that GUI apps see, so that they can all see ImageMagick's convert, for example? Duncan Murdoch > > >>> Duncan Murdoch >>> >>> _______________________________________________ >>> R-SIG-Mac mailing list >>> R-SIG-Mac@r-project.org >>> 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: pd....@cbs.dk Priv: pda...@gmail.com >> >> >> >> >> >> >> >> > _______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-mac