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)?
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.
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.
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
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.
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.
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.
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
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.