web-dev-qa-db-fra.com

Rendre $ Java_HOME facilement modifiable dans Ubuntu

Sous Ubuntu, j'aimerais permuter ma variable d’environnement Java_HOME entre Java 5 et 6.

J'ouvre un terminal et tapez ce qui suit pour définir la variable d'environnement Java_HOME:

export Java_HOME=/usr/lib/jvm/Java-1.5.0-Sun

Et dans cette même fenêtre de terminal, je tape ce qui suit pour vérifier que la variable d'environnement a été mise à jour:

echo $Java_HOME

Et je vois / usr/lib/jvm/Java-1.5.0-Sun et c’est ce que j’attends de voir. De plus, je modifie ~/.profile et je règle la variable d’environnement Java_HOME sur /usr/lib/jvm/Java-1.5.0-Sun.

Et maintenant pour le problème - quand j'ouvre une nouvelle fenêtre de terminal et que je vérifie ma variable d'environnement Java_HOME en tapant echo $ Java_HOME je vois que ma variable d'environnement Java_HOME a été restaurée à Java 6. Lorsque je redémarre ma machine (ou que je me déconnecte puis que je retourne, je suppose), la variable d'environnement Java_HOME est définie sur Java 5 (probablement à cause de la modification apportée dans mon ~/.profile ).

Y a-t-il un moyen de contourner cela pour que je puisse changer d’environnement Java_HOME sans avoir à me déconnecter et à me reconnecter (ET faire en sorte que la variable d’environnement change reste bloquée nouvelles fenêtres du terminal)?

138
Junho Park

Placez les variables d’environnement dans le fichier global /etc/environment:

...
export Java_HOME=/usr/lib/jvm/Java-1.5.0-Sun
...

Exécutez "source/etc/environment" dans chaque shell où vous souhaitez que les variables soient mises à jour:

$ source /etc/environment

Vérifiez que cela fonctionne:

$ echo $Java_HOME
$ /usr/lib/jvm/Java-1.5.0-Sun

Génial, pas besoin de déconnexion.

Si vous souhaitez définir la variable d'environnement Java_HOME uniquement dans le terminal, définissez-la dans le fichier ~/.bashrc.

196
Martin Konicek

Cela résoudra probablement votre problème: https://help.ubuntu.com/community/EnvironmentVariables

Variables d'environnement de la session

Afin de définir les variables d'environnement d'une manière qui affecte l'environnement d'un utilisateur particulier, il est déconseillé de placer des commandes pour définir leurs valeurs dans des fichiers de script Shell particuliers dans le répertoire de base de l'utilisateur, mais d'utiliser:

~/.pam_environment - Ce fichier est spécialement conçu pour configurer l'environnement d'un utilisateur. Ce n'est pas un fichier de script, mais plutôt une expression d'affectation, une par ligne.

Non recommandé:

~/.profile - C’est probablement le meilleur fichier pour placer des assignations de variable d’environnement, car il est exécuté automatiquement par DisplayManager pendant la session de bureau du processus de démarrage ainsi que par le shell de connexion lorsqu’on se connecte à partir de la console textuelle.

31
Holger Frohloff

Essayez ces étapes.

--Nous allons éditer "etc\profile". Les variables d'environnement doivent être entrées au bas du fichier. Ubuntu ne donnant pas accès au dossier racine, nous devrons utiliser quelques commandes dans le terminal

Étape 1: Démarrer le terminal. Tapez la commande: gksudo gedit /etc/profile

Étape 2: Le fichier texte du profil s'ouvrira. Entrez les variables d'environnement en bas de la page ........... Exemple:export Java_HOME=/home/alex/jdk1.6.0_22/bin/Java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH

step3: sauvegarder et fermer le fichier. Vérifiez si les variables d'environnement sont définies à l'aide de la commande echo ........ Par exempleecho $PATH

13
Alex

Vous devez mettre la définition de variable dans le fichier ~/.bashrc.

De la page de manuel de bash:

Quand un shell interactif qui n'est pas un login est démarré, bash lit et exécute les commandes de /etc/bash.bashrc et ~/.bashrc, si ces fichiers existent.

9
Paweł Nadolski

Traditionnellement, si vous souhaitez uniquement modifier la variable dans la fenêtre de votre terminal, définissez-la dans le fichier .bashrc, qui est généré chaque fois qu'un nouveau terminal est ouvert. Le fichier .profile n'est pas créé chaque fois que vous ouvrez un nouveau terminal.

Voyez la différence entre .profile et .bashrc en question: Quelle est la différence entre .bashrc, .bash_profile et .environment?

.bashrc devrait résoudre votre problème. Cependant, ce n’est pas la bonne solution puisque vous utilisez Ubuntu. Reportez-vous à la page d'aide pertinente d'Ubuntu " Variables d'environnement de session ". Il n’est donc pas étonnant que .profile ne fonctionne pas pour vous. J'utilise Ubuntu 12.04 et xfce. J'ai mis en place mon .profile et il ne prend tout simplement pas effet même si je me déconnecte et que je me connecte. Expérience similaire ici . Vous devrez donc peut-être utiliser le fichier .pam_environment et oublier totalement .profile et .bashrc. Et NOTEZ que .pam_environment n'est pas un fichier de script.

5
HongboZhu

Après avoir modifié le fichier .profile, vous devez exécuter le fichier pour que les modifications prennent effet.

root@masternode# . ~/.profile

Une fois que cela est fait, la commande echo fonctionnera.

1
user2094397

Je sais que la question est longue et froide, mais elle revient chaque fois qu’une nouvelle version majeure ou récente Java est publiée. Maintenant, cela s'appliquerait facilement aux échanges 6 et 7.

J'ai déjà fait cela avec update-Java-alternatives: http://manpages.ubuntu.com/manpages/hardy/man8/update-Java-alternatives.8.html

1
Alain O'Dea

Jetez un oeil à bash(1) , vous avez besoin d'un shell de connexion pour récupérer le ~/.profile, c'est-à-dire le -l option.

1
Nikolai Fetissov