Comment puis-je ajouter un répertoire à $PATHdans Ubuntu et rendre les modifications permanentes?
Comment puis-je ajouter un répertoire à $PATHdans Ubuntu et rendre les modifications permanentes?
Réponses:
Un chemin d'accès défini .bash_profilene sera défini que dans un shell de connexion bash ( bash -l). Si vous indiquez votre chemin, .profileil 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
bashen tant que shell de connexion ne pas analyser .profilesi l'un .bash_profileou l' autre .bash_loginexiste. 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 .bashrcpour 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 .bashrcdans votre répertoire personnel et ajoutez la ligne suivante:
export PATH="/path/to/dir:$PATH"
Vous devrez vous .bashrcconnecter à 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"?
.bashrcn’est pas le bon endroit pour définir des variables d’environnement. Ils devraient aller .profileou .pam_environment. Voir mywiki.wooledge.org/DotFiles
. .bashrcpas .bashrc:) ou source .bashrcd'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 PATHest 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 sudodans 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 PATHvariable d'environnement. Pour vérifier exécuter env et voir la PATHvaleur dans la liste.
Apparenté, relié, connexe:
source /etc/environmentpour 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:
$HOMEdossier..profileet 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_environmentfichier dans le répertoire personnel.PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.Mettez cette ligne dans votre ~/.bashrcfichier.
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 ~/.profilefichier. Cependant, vous ne devriez probablement pas faire les deux, car le chemin sera ajouté deux fois à votre PATHenvironnement si vous ouvrez un terminal.
$HOME/.profileles paramètres personnels ou /etc/profilepour 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 ~/.profileou ~/.pam_environment, la session gnome (ou le DE que vous utilisez) en héritera. Ajouter PATH dans a ~/.bashrcaussi l’inconvénient que si vous ouvrez / exec bash de manière interactive depuis un autre shell bash interactif, il sera ajouté plusieurs fois.
~/.profilec'est correct pour les chemins personnels, cependant; c'est là que Ubuntu ajoute le ~/binrépertoire. Et j'avoue avoir exagéré un peu le nombre de façons, juste un peu.
~/.profiledans 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 .bashrcplace. Les terminaux d'interface graphique dans Ubuntu ne sont pas des shells de connexion, .bash_profileils 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 .profileet l'utilisera à la place. Par défaut, vous aurez un .profileet .bashrcdans Ubuntu. Et .profilec’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.shest plus facile pour les débutants.
gksu gedit /etc/profile.d/SCRIPT_NAME.shc'est encore plus facile.
Chaque fois que j'installe mon dossier de scripts BASH, je suis le modèle de test pour un $HOME/bindossier 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 /scriptsquelque part plus près de mon $HOMEdossier. 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 PATHis 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 .profileet 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 $PATHest 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 ~/.bashrcet ajoutez la ligne suivante.
. ~/.bash_profile
Puis éditez votre .bash_profile selon vos besoins .....
.bash_profilecomme vous avez besoin". Que dois-je faire exactement au .bash_profile?
.profileou .bash_profiledevrait source .bashrc. Pas l'inverse.