web-dev-qa-db-fra.com

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

Je veux ajouter à 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 effectué toutes les opérations suivantes, dont aucune n'associe en permanence la commande R au répertoire de mon installation R dans ~/R/bin.

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

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?

5
areyoujokingme

Le fichier /etc/environment n'est pas un fichier de script: autant que je sache, vous ne pouvez pas utiliser export et il ne prend pas en charge le développement de variable du type $HOME, mais des paires simplesvariable=value. Donc, pour utiliser ce fichier, vous devez simplement ajouter 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, définir le système PATH pour inclure le répertoire de base d'un utilisateur de cette manière est une pratique douteuse à mon humble avis: la méthode normale consiste à utiliser l'un des Les fichiers de démarrage du shell de l'utilisateur: ~/.profile est généralement le fichier recommandé pour les variables d'environnement. Cependant, il présente l'inconvénient de n'être appelé que par les shells de connexion. Par conséquent, pour qu'il prenne effet, vous devrez vous déconnecter puis revenir en arrière, ou au moins, commencez une nouvelle connexion Shell, 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 restera probablement de leur propriétaire à 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étaire correct, par exemple.

Sudo chown username:username ~/.profile

Ensuite, vous pouvez ajouter le composant de chemin souhaité à l’aide de 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 l'ajouter en tant que

# 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
7
steeldriver