Définition d’une variable d’environnement à l’échelle du système à l’aide de / etc / environment

Je veux append à mon PATH pour que mon ordinateur (Ubuntu) sache où interpréter la commande “R” (pour lancer R). J’ai besoin de cela pour qu’un terminal ou RStudio puisse trouver où j’ai installé R.

J’ai fait tout ce qui suit, dont aucun n’associe en permanence la commande R au répertoire de mon installation R dans ~/R/bin .

  1. export PATH=$PATH:$HOME/R/bin <- Ceci fonctionne dans la session de terminal dans laquelle il a été activé, mais si j'ouvre un deuxième terminal, PATH revient à ce qu'il était avant l'ajout de $ HOME / R / bin à cela

Le même comportement “Terminal local uniquement” s’est produit lorsque j’ai ajouté cette ligne à deux fichiers différents, en fonction des recommandations de différents sites Web:

  1. sudo vim ~/.profile

     export PATH=$PATH:$HOME/R/bin 
  2. sudo vim /etc/environment

     export PATH=$PATH:$HOME/R/bin 

Pourquoi R n’est-il pas reconnu dans les nouvelles sessions de terminal?

Le fichier /etc/environment n’est pas un fichier de script: autant que vous puissiez en croire l’ export , il ne prend pas en charge le développement de variable de type $HOME , il s’agit simplement de simples paires variable=value . Donc, pour utiliser ce fichier, vous devez simplement append votre chemin à la définition existante, comme

 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/username/R/bin" 

Cependant, configurer le PATH à l’ échelle du système pour inclure le répertoire de base d’un utilisateur de cette manière est une pratique discutable à mon humble avis: la méthode normale consiste à utiliser l’un des fichiers de démarrage du shell de l’utilisateur: ~/.profile . variables, cependant, il a l’inconvénient d’être invoqué uniquement par les shells de login, vous devez donc vous déconnecter puis vous reconnecter – ou au moins, démarrer un nouveau shell de login, par exemple en utilisant

  su - username 

ou

  su -l username 

Notez que sudo ne doit pas être utilisé pour éditer ces fichiers personnels , car il est probable que ceux-ci restront la propriété de root , ce qui peut causer d’autres problèmes par la suite. Si vous avez déjà utilisé sudo vim vous devrez peut-être utiliser sudo chown pour restaurer leur propriété correcte, par exemple:

 sudo chown username:username ~/.profile 

Ensuite, vous pouvez append le composant de chemin souhaité en utilisant votre éditeur préféré, par exemple

 vim ~/.profile 

Vous pouvez même envisager de copier le paradigme existant pour ~/bin dans ce fichier, c’est-à-dire de l’append comme

 # set PATH so it includes user's private R bin if it exists if [ -d "$HOME/R/bin" ] ; then PATH="$HOME/R/bin:$PATH" fi