Comment définir PATH sous Windows via la commande R “shell”

Je souhaite append git à mon PATH sous Windows 7, via la commande “shell” dans R.

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

Mais je ne vois pas ce chemin ajouté.

Si j’exécute le code ci-dessus dans cmd.exe, il l’ajoute à PATH.

Une idée quel est le problème?

MISE À JOUR: J’ai fini par exécuter manuellement ce qui suit via cmd.exe (que je m’étais assuré d’exécuter en tant qu’administrateur)

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

Ce qui a fonctionné Mais j’aurais aimé pouvoir le faire via R. (peut-être créer un fichier temporaire et l’exécuter?) J’ai ensuite dû redémarrer certains programmes pour m’assurer qu’ils avaient été affectés.

Si vous voulez mettre à jour votre chemin de manière permanente, alors vous avez à peu près la réponse:

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

R note seulement une copie des variables d’environnement Windows au démarrage, donc strsplit(Sys.getenv("PATH"), ";") ne sera différent que lorsque vous redémarrez R.

En outre, cela ne fonctionnera pas avec les permissions d’administrateur (à moins que vous ne définissiez R en tant qu’administrateur?), Il appenda donc le chemin d’access à la variable du chemin d’ access utilisateur et non celle du système.


Si vous voulez que R voie un chemin différent dans la session en cours, utilisez simplement Sys.setenv .

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

Cela ne fera pas de changements permanents au chemin. Seul R peut voir ce changement, et seulement jusqu’à ce que vous le fermiez.

Lorsque vous exécutez un shell , un nouveau processus est créé. Sous Windows, cela exécutera CMD.EXE et transmettra les arguments donnés. Ensuite, ce processus se termine.

Lorsque vous modifiez la variable d’environnement, vous modifiez dans un sous-processus de R et non dans le processus R lui-même. Lorsque le sous-processus meurt, son environnement le fait également.

Vous devez définir le chemin de manière appropriée avant de démarrer R à la place.

En ce qui concerne

Quel est le problème?

Vous modifiez simplement la variable d’environnement PATH dans le nouveau processus d’interpréteur de commandes.


Vous pouvez utiliser la commande setx pour modifier les parameters par défaut PATH, mais cela n’affecte pas votre processus en cours.

Ce que vous devez faire dépend un peu de ce que vous essayez d’atteindre.