Comment puis-je ajouter un répertoire à $PATH
dans Ubuntu et rendre les modifications permanentes?
Comment puis-je ajouter un répertoire à $PATH
dans Ubuntu et rendre les modifications permanentes?
Réponses:
Un chemin d'accès défini .bash_profile
ne sera défini que dans un shell de connexion bash ( bash -l
). Si vous indiquez votre chemin, .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
En passant, vous pouvez vérifier la variable PATH d'un processus en regardant son environnement dans /proc/[pid]/environ
(remplacez [pid] par le nombre à partir de ps axf
). Par exemple utilisergrep -z "^PATH" /proc/[pid]/environ
bash
en tant que shell de connexion ne pas analyser .profile
si l'un .bash_profile
ou l' autre .bash_login
existe. De man bash
:
il recherche ~ / .bash_profile, ~ / .bash_login et ~ / .profile, dans cet ordre, puis lit et exécute les commandes de la première qui existe et qui est lisible.
Consultez les réponses ci-dessous pour obtenir des informations sur les shells interactifs autres que les utilisateurs .pam_environment
, ou .bashrc
pour les shells interactifs, ou définissez la valeur de manière globale pour tous les utilisateurs en insérant un script /etc/profile.d/
ou /etc/X11/Xsession.d/
en affectant leur impact sur la session des gestionnaires d'affichage.
PATH="$HOME/bin:$PATH"
Alors je l'ajoute?
Editez .bashrc
dans votre répertoire personnel et ajoutez la ligne suivante:
export PATH="/path/to/dir:$PATH"
Vous devrez vous .bashrc
connecter à votre compte ou vous déconnecter / vous connecter (ou redémarrer le terminal) pour que les modifications prennent effet. Pour trouver votre source .bashrc
, tapez simplement
$ source ~/.bashrc
.bashrc
"? Comment faites-vous "redémarrer le terminal"?
.bashrc
n’est pas le bon endroit pour définir des variables d’environnement. Ils devraient aller .profile
ou .pam_environment
. Voir mywiki.wooledge.org/DotFiles
. .bashrc
pas .bashrc
:) ou source .bashrc
d'ailleurs
L'emplacement recommandé pour définir des variables d'environnement permanentes à l'échelle du système s'appliquant à tous les utilisateurs est le suivant:
/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+ F2et tapez:
gksudo gedit /etc/environment
(ou ouvrez le fichier en utilisant sudo
dans votre éditeur de texte préféré)
Pour effectuer des changements, 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 PATH
variable d'environnement. Pour vérifier exécuter env et voir la PATH
valeur dans la liste.
Apparenté, relié, connexe:
source /etc/environment
pour recharger les changements
Je pense que la manière canonique dans Ubuntu est la suivante:
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
dossier..profile
et cliquez sur Ouvrir avec l'éditeur de texte .PATH="$PATH:/my/path/foo"
..profile
).$PATH:
bit qui inclut la définition existante de PATH
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é les outils de chemin d'accès du SDK Android par:
~/.pam_environment
fichier dans le répertoire personnel.PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
.Mettez cette ligne dans votre ~/.bashrc
fichier.
Il est recherché chaque fois que vous ouvrez un terminal
EDIT : Sur la base des commentaires ci - dessous, pour un cadre plus général qui s'appliquera à toutes les coquilles (y compris quand vous frappez Alt- F2dans l' unité), ajoutez la ligne à votre ~/.profile
fichier. Cependant, vous ne devriez probablement pas faire les deux, car le chemin sera ajouté deux fois à votre PATH
environnement si vous ouvrez un terminal.
$HOME/.profile
les paramètres personnels ou /etc/profile
pour tous les utilisateurs. Mais si cela n’est nécessaire que pour Bash, je suppose que l’un ou l’autre fonctionnera.
~/.bashrc
, il ne sera disponible que dans les terminaux ouverts. Par exemple, si vous appuyez sur Alt + F2 et essayez d'exécuter une commande à partir de ce répertoire, il ne la trouvera pas. Si vous le définissez dans ~/.profile
ou ~/.pam_environment
, la session gnome (ou le DE que vous utilisez) en héritera. Ajouter PATH dans a ~/.bashrc
aussi l’inconvénient que si vous ouvrez / exec bash de manière interactive depuis un autre shell bash interactif, il sera ajouté plusieurs fois.
~/.profile
c'est correct pour les chemins personnels, cependant; c'est là que Ubuntu ajoute le ~/bin
répertoire. Et j'avoue avoir exagéré un peu le nombre de façons, juste un peu.
~/.profile
dans ce cas aussi.
Pour l’adapter au 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
Selon ce fil, il semble que le comportement d'Ubuntu soit légèrement différent de celui de RedHat et de ses clones.
.bashrc
, collez-le à la .bashrc
place. Les terminaux d'interface graphique dans Ubuntu ne sont pas des shells de connexion, .bash_profile
ils ne seront donc pas exécutés.
.bash_profile
. Si bash ne trouve pas .bash_profile
(lorsque vous vous connectez de manière interactive), il le recherchera .profile
et l'utilisera à la place. Par défaut, vous aurez un .profile
et .bashrc
dans Ubuntu. Et .profile
c’est le bon endroit pour définir les variables d’environnement si nous ne tenons pas compte de pam_env.
En terminal, cd
à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 sur ce blog ici .
sudo vi /etc/profile.d/SCRIPT_NAME.sh
ajouter là
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
sudo nano /etc/profile.d/SCRIPT_NAME.sh
est plus facile pour les débutants.
gksu gedit /etc/profile.d/SCRIPT_NAME.sh
c'est encore plus facile.
Chaque fois que j'installe mon dossier de scripts BASH, je suis le modèle de test pour un $HOME/bin
dossier 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 je décidais de me déplacer /scripts
quelque part plus près de mon $HOME
dossier. 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 fichier PATH
is from/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 les informations suivantes:
# 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.
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, on devrait utiliser
PATH="${PATH:+${PATH}:}$HOME/bin"
pour ajouter (au lieu de PATH="$PATH:$HOME/bin"
), et
PATH="$HOME/bin${PATH:+:${PATH}}"
pour ajouter (au lieu de PATH="$HOME/bin:$PATH"
).
Cela évite les deux-points fantômes parasites lorsqu’il $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-leading-coling-if-unset
Pour Ubuntu, éditez le ~/.bashrc
et ajoutez la ligne suivante.
. ~/.bash_profile
Puis éditez votre .bash_profile selon vos besoins .....
.bash_profile
comme vous avez besoin". Que dois-je faire exactement au .bash_profile
?
.profile
ou .bash_profile
devrait source .bashrc
. Pas l'inverse.