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

Reply via email to