How to set PATH on Windows through R “shell” command

泪湿孤枕 提交于 2019-12-20 14:18:04

问题


I wish to add git to my PATH in Windows 7, through the "shell" command in R.

shell('set PATH=%PATH%;"C:\\Program%20Files%20(x86)\\Git\\bin"', intern = TRUE)
shell("echo %PATH% ", intern= TRUE)

But I do not see that path added.

If I run the above code in cmd.exe, it does add it to PATH.

Any idea what is the issue?

UPDATE: I ended up manually running the following through cmd.exe (which I made sure to run as admin)

setx PATH "C:\\Program Files (x86)\\Git\\bin"

Which worked. But I wish I could have done so through R. (maybe create a temp file and run it?) I then had to restart some programs to make sure they had been affected.


回答1:


If you want to permanantly update your path, then you pretty much had the answer:

shell('setx PATH "C:\\Program Files (x86)\\Git\\bin"')

R only notes a copy of the Windows environment variables when it starts up though, so strsplit(Sys.getenv("PATH"), ";") won't be different until you restart R.

Also, this won't run as with admin permissions (unless you set R as an administrator?) so it will add the path to the user path variable not the system one.


If you want R to see a different path in the current session, just use Sys.setenv.

Sys.setenv(
  PATH = paste(
    Sys.getenv("PATH"), 
    "C:\\Program Files (x86)\\Git\\bin", 
    sep = ";"
  )
)

This won't make permanant changes to the path. Only R can see this change, and only until you close it.




回答2:


When you run shell, a new process is created. In Windows, this will run CMD.EXE and pass the arguments given. Then this process exits.

When you modify the environment variable, you are modifying in a subprocess of R and not in the R process itself. When the subprocess dies, so does its environment.

You should set the path appropriately before you start R instead.




回答3:


Regarding

what is the issue?

You're just changing the PATH environment variable in the new command interpreter process.


You can use the setx command to change the PATH defaults, but that does not affect your current process.

What to do depends a bit on what you're trying to achieve.



来源:https://stackoverflow.com/questions/24622725/how-to-set-path-on-windows-through-r-shell-command

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!