如何通过R";在Windows上设置路径;壳牌公司;命令

如何通过R";在Windows上设置路径;壳牌公司;命令,windows,r,git,shell,path,Windows,R,Git,Shell,Path,我希望通过R中的“shell”命令将git添加到Windows7中的路径中 shell('set PATH=%PATH%;"C:\\Program%20Files%20(x86)\\Git\\bin"', intern = TRUE) shell("echo %PATH% ", intern= TRUE) 但我看不到这条道路被添加 如果我在cmd.exe中运行上述代码,它会将其添加到PATH 你知道是什么问题吗 更新: 我最终通过cmd.exe手动运行了以下内容(我确保以管理员身份运行) 这起

我希望通过R中的“shell”命令将git添加到Windows7中的路径中

shell('set PATH=%PATH%;"C:\\Program%20Files%20(x86)\\Git\\bin"', intern = TRUE)
shell("echo %PATH% ", intern= TRUE)
但我看不到这条道路被添加

如果我在cmd.exe中运行上述代码,它会将其添加到PATH

你知道是什么问题吗

更新: 我最终通过cmd.exe手动运行了以下内容(我确保以管理员身份运行)

这起作用了。但我希望我可以通过R这样做(也许创建一个临时文件并运行它?)
然后我不得不重新启动一些程序,以确保它们受到影响。

当您运行
shell
时,会创建一个新进程。在Windows中,这将运行
CMD.EXE
,并传递给定的参数。然后这个过程退出

修改环境变量时,您是在R的子流程中修改,而不是在R流程本身中修改。当子流程消亡时,其环境也随之消亡

您应该在启动R之前正确设置路径。

问题出在哪里

您只是在新的命令解释器进程中更改PATH环境变量


您可以使用
setx
命令更改路径默认值,但这不会影响当前进程


要做什么取决于你想要达到的目标。

如果你想永久更新你的路径,那么你几乎有了答案:

shell('setx PATH "C:\\Program Files (x86)\\Git\\bin"')
R只在启动时注意到Windows环境变量的一个副本,因此在重新启动R之前,strsplit(Sys.getenv(“PATH”),“;”)不会有什么不同

此外,这不会与管理员权限一样运行(除非您将R设置为管理员?),因此它会将路径添加到用户路径变量,而不是系统变量


如果希望R在当前会话中看到不同的路径,只需使用
Sys.setenv

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

这不会对路径进行永久性更改。只有R才能看到此更改,并且只能在您关闭它之前看到。

什么是
shell('set PATH=%PATH%;“C:\\Program%20Files%20(x86)\\Git\\bin',shell=NULL,intern=TRUE)
give?basename(shell)中的错误:需要一个字符向量参数因此,它不起作用。对不起,谢谢,干杯。我试过了,但失败了。下面是一个示例代码:------------shell(“setx PATH=%PATH%;C:/xampp/php”)-------我得到:---错误:无效语法。默认选项不允许超过“2”个时间。键入“SETX/?”了解用法。警告消息:1:正在运行命令“C:\Windows\system32\cmd.exe/C setx PATH=%PATH%;C:/xampp/php'的状态为12:在shell中(“setx路径=%PATH%;C:/xampp/php”):'setx路径=%PATH%;C:/xampp/php的执行失败,错误代码为1 Hanks Richie(我在今年的用户大会上错过了你)
Sys.setenv(
  PATH = paste(
    Sys.getenv("PATH"), 
    "C:\\Program Files (x86)\\Git\\bin", 
    sep = ";"
  )
)