我希望通过R中的“shell”命令将git添加到Windows 7中的PATH中。
shell('set PATH=%PATH%;"C:\\Program%20Files%20(x86)\\Git\\bin"', intern = TRUE) shell("echo %PATH% ", intern= TRUE)
但是我没有看到添加的path。
如果我在cmd.exe中运行上面的代码,它会将其添加到PATH。
任何想法是什么问题?
更新:我结束了通过cmd.exe手动运行以下(我确保以pipe理员身份运行)
setx PATH "C:\\Program Files (x86)\\Git\\bin"
哪些工作。 但是,我希望我能通过R做到这一点(也许创build一个临时文件并运行它)然后我必须重新启动一些程序,以确保它们已经受到影响。
如果你想永远更新你的道路,那么你几乎得到了答案:
shell('setx PATH "C:\\Program Files (x86)\\Git\\bin"')
R在启动时只记录Windows环境变量的副本,所以strsplit(Sys.getenv("PATH"), ";")将不会有所不同,除非重新启动R.
此外,这不会像管理员权限一样运行(除非您将R设置为管理员?),所以它将路径添加到用户路径变量而不是系统路径。
如果你想R在当前会话中看到不同的路径,只需使用Sys.setenv 。
Sys.setenv( PATH = paste( Sys.getenv("PATH"), "C:\\Program Files (x86)\\Git\\bin", sep = ";" ) )
这不会对路径做出永久的改变。 只有R可以看到这个变化,直到你关闭它。
当你运行shell ,会创建一个新的进程。 在Windows中,这将运行CMD.EXE并传递给定的参数。 然后这个过程退出。
在修改环境变量时,您正在修改R的子进程而不是R进程本身。 当子进程死了,它的环境也是如此。
您应该在启动R之前正确设置路径。
关于
“这是什么问题?
你只是在新的命令解释器进程中改变PATH环境变量。
您可以使用setx命令来更改PATH默认值,但这不会影响您当前的进程。
做什么取决于你想要达到的目标。