Comment puis-je ajouter un répertoire au $PATH
dans Ubuntu et rendre les modifications permanentes?
Un chemin défini dans .bash_profile
ne sera défini que dans un shell de connexion bash (bash -l
). Si vous mettez votre chemin dans .profile
, il sera disponible pour votre session de bureau complète. Cela signifie que même la métacité l'utilisera.
Par exemple ~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Btw, vous pouvez vérifier la variable PATH d'un processus en regardant son environnement dans /proc/[pid]/environ
(remplacez [pid] par le numéro de ps axf
). Par exemple. utilisez grep -z "^PATH" /proc/[pid]/environ
bash
en tant que connexion Shell n'analyse pas .profile
s'il existe soit .bash_profile
ou .bash_login
. De man bash
:
il recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre, puis lit et exécute les commandes du premier existant et lisible.
Voir réponses ci-dessous pour plus d'informations sur .pam_environment
ou .bashrc
pour les interpréteurs de commandes interactifs autres que les identifiants, ou définissez la valeur de manière globale pour tous les utilisateurs en plaçant un script dans /etc/profile.d/
ou utilisez /etc/X11/Xsession.d/
pour affecter la session des gestionnaires d'affichage.
Editez .bashrc
dans votre répertoire personnel et ajoutez la ligne suivante:
export PATH="/path/to/dir:$PATH"
Vous devrez vous procurer votre .bashrc
ou vous déconnecter/vous connecter (ou redémarrer le terminal) pour que les modifications prennent effet. Pour trouver votre .bashrc
, tapez simplement
$ source ~/.bashrc
L'emplacement recommandé pour définir les variables d'environnement permanentes applicables à tous les utilisateurs est:
/etc/environment
(qui est où la valeur par défaut PATH
est définie)
Cela fonctionnera dans le bureau ou la console, gnome-terminal ou TTY, beau temps mauvais temps;)
Pour éditer, appuyez sur Alt+F2 et type:
gksudo gedit /etc/environment
(ou ouvrez le fichier en utilisant Sudo
dans votre éditeur de texte préféré)
Pour effectuer des modifications, exécutez . /etc/environment
. Comme ce fichier n'est qu'un simple script, il s'exécutera et affectera le nouveau chemin d'accès à la variable d'environnement PATH
. Pour vérifier l'exécution env et voir la valeur PATH
dans la liste.
Connexes:
Je pense que la manière canonique dans Ubuntu est:
créer un nouveau fichier sous /etc/profile.d/
Sudo vi /etc/profile.d/SCRIPT_NAME.sh
ajouter là:
export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
et lui donner la permission d'exécution
Sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
Pour les débutants complets (comme moi) qui sont plus à l'aise avec l'interface graphique:
$HOME
..profile
et cliquez sur Ouvrir avec l'éditeur de texte.PATH="$PATH:/my/path/foo"
..profile
).Pour les variables d'environnement persistantes disponibles pour des utilisateurs particuliers uniquement. Je recommande fortement la documentation officielle Ubuntu.
https://help.ubuntu.com/community/EnvironmentVariables
En me référant à la documentation ci-dessus, j'ai configuré mes outils de chemin d'accès du SDK Android par:
~/.pam_environment
dans le répertoire de base.PATH DEFAULT=${PATH}:~/Android-sdk-linux/tools
.Mettez cette ligne dans votre fichier ~/.bashrc
.
Il est recherché chaque fois que vous ouvrez un terminal
EDIT: Basé sur les commentaires ci-dessous, pour un réglage plus général qui s'appliquera à tous les shells (y compris lorsque Alt-F2 dans Unity), ajoutez la ligne à votre fichier ~/.profile
. Cependant, vous ne devriez probablement pas faire les deux, car le chemin sera ajouté deux fois à votre environnement PATH
si vous ouvrez un terminal.
Pour l’adapter à l’ensemble du système, ajoutez la ligne export PATH=/path/you're/adding:$PATH
à la fin de /etc/profile
.
Pour ajouter le répertoire uniquement à l'utilisateur connecté, ajoutez la même ligne à ~/.bash_profile
.
L'ajouter à .bashrc fonctionnera, mais je pense que la méthode la plus traditionnelle de configuration de vos variables de chemin est le .bash_profile en ajoutant les lignes suivantes.
PATH=$PATH:/my/path/foo
export PATH
D'après ce fil , il semble que le comportement d'Ubuntu soit légèrement différent de celui de RedHat et des clones.
Dans le terminal, cd
to the_directory_you_want_to_add_in_the_path
echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc
Ce n'était pas mon idée. J'ai trouvé cette façon d'exporter le chemin à cette blog ici .
Sudo vi /etc/profile.d/SCRIPT_NAME.sh
ajouter là
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
Chaque fois que j'installe mon dossier de scripts BASH, je suis le modèle de test pour un dossier $HOME/bin
qui se trouve dans la plupart des fichiers .profile des versions récentes d'Ubuntu. Je pose un test qui ressemble à
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
Cela fonctionne à peu près à 100% du temps, et me laisse libre de le changer dans un éditeur de texte avec un rapide "Remplacer tout" si jamais je décidais de déplacer /scripts
quelque part plus près de mon dossier $HOME
. Je ne l'ai pas encore fait dans 6 installations Ubuntu, mais il y a "toujours demain". S
BZT
La méthode recommandée pour modifier votre PATH
est d'utiliser le fichier /etc/environment
.
Exemple de sortie de /etc/environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Par exemple, pour ajouter le nouveau chemin de /home/username/mydir
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
Ensuite, redémarrez votre PC.
Variables d'environnement à l'échelle du système
Le fichier/etc/environment est un fichier approprié pour les paramètres de variable d'environnement qui affectent le système dans son ensemble (plutôt que seulement un utilisateur particulier). Une alternative consiste à créer un fichier à cette fin dans le répertoire /etc/profile.d.
/etc/environment
Ce fichier est spécifiquement conçu pour les paramètres de variable d'environnement à l'échelle du système. Ce n'est pas un fichier de script, mais plutôt une expression d'affectation, une par ligne.
Remarque: Le développement de variable ne fonctionne pas dans/etc/environment.
Plus d'informations peuvent être trouvées ici: EnvironmentVariables
Ouvrez votre terminal, tapez gedit .profile
et insérez ce qui suit:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
Fermer et ouvrir le terminal, cela devrait fonctionner.
Mettez-le dans votre ~/.bashrc
ou whatevershell vous utilisez rc (ou pour être mentionné plus tôt ~/.profile
) ET ~/.xsessionrc
de sorte qu'il fonctionnera également dans X (en dehors de Shell).
Même si les scripts système ne l'utilisent pas, dans tous les cas où l'on souhaite ajouter un chemin (par exemple, $HOME/bin
) à la variable d'environnement PATH, il convient d'utiliser
PATH="${PATH:+${PATH}:}$HOME/bin"
pour ajouter (au lieu de PATH="$PATH:$HOME/bin"
), et
PATH="$HOME/bin${PATH:+:${PATH}}"
pour l'ajout anticipé (au lieu de PATH="$HOME/bin:$PATH"
).
Ceci évite les deux-points fantômes parasites lorsque $PATH
est initialement vide, ce qui peut avoir des effets indésirables.
Voir par exemple https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leating-leading-colon-if-unset