Comment ajouter des variables d'environnement?

215

J'utilise Ubuntu 11.04. J'utilise le terminal pour démarrer une session bash et je veux ajouter une variable d'environnement:

[email protected]:~$ env THEVAR=/example

Mais ça ne marche pas. Il montre toutes les variables avec THEVAR étant le dernier, mais un autre appel à env n'affiche pas THEVAR plus- env | grep THEVAR ne retourne rien.

De même, les scripts avec export ( export THEVAR=/example ) ou d’autres affectations de variables ( THEVAR=/example ) n’ajoutent pas la variable d’environnement.

Je sais que je fais quelque chose de mal, je sais que cela devrait être quelque chose de simple, mais je ne peux tout simplement pas trouver quoi.

MISE À JOUR: La vraie signification de ma question était celle-ci: lien

(Quoi qu’il en soit, je choisirai la réponse la plus votée et laisserai le titre édité - ce n’était pas ce que je demandais)

env exécute un programme dans un environnement modifié, puis rejette toutes les modifications.

    
posée huff 27.08.2011 - 02:22
la source

5 réponses

346

Pour définir la variable uniquement pour le shell actuel:

VARNAME="my value"

Pour le définir pour le shell en cours et tous les processus démarrés à partir du shell actuel:

export VARNAME="my value"      # shorter, less portable version

Pour le définir de manière permanente pour toutes les futures sessions bash, ajoutez cette ligne à votre fichier .bashrc dans votre répertoire $HOME .

Pour le définir de manière permanente, et pour l’ensemble du système (tous les utilisateurs, tous les processus), ajoutez la variable set dans / etc / environment:

sudo -H gedit /etc/environment

Ce fichier accepte uniquement les affectations de variables telles que:

VARNAME="my value"

N'utilisez pas le mot-clé export ici.

Vous devez vous déconnecter de l’utilisateur actuel et vous reconnecter pour que les modifications des variables d’environnement se produisent.

    
réponse donnée Michał Šrajer 27.08.2011 - 09:50
la source
21

Pour définir une variable d’environnement une fois, utilisez la commande export dans l’invite, pas dans un script shell:

$ export THEVAR=/example

La variable sera définie pour le reste de la session shell ou jusqu’à ce qu’elle soit désactivée.

Pour définir une variable d’environnement à chaque fois, utilisez la commande export du fichier .bashrc (ou le fichier d’initialisation approprié pour votre shell).

Pour définir une variable d'environnement à partir d'un script, utilisez la commande export dans le script, puis source le script. Si vous exécutez le script, cela ne fonctionnera pas.

Pour une explication de la différence entre sourcing et exécution, voir cette réponse: lien

    
réponse donnée lesmana 27.08.2011 - 09:20
la source
15

Pour ajouter de manière permanente une nouvelle variable d'environnement dans Ubuntu (testée uniquement en 14.04), procédez comme suit:

  1. Ouvrez un terminal (en appuyant sur Ctrl Alt T )
  2. sudo -H gedit /etc/environment
  3. Tapez votre mot de passe
  4. Modifier le fichier texte qui vient d’être ouvert:
    par exemple. Si vous voulez ajouter FOO=bar , écrivez simplement FOO=bar dans une nouvelle ligne
  5. Enregistrez-le
  6. Une fois enregistré, déconnectez-vous et reconnectez-vous.
  7. Vos modifications requises sont effectuées.
réponse donnée user355501 07.12.2014 - 09:45
la source
3

Pour que l’environnement / var soit modifié après la fin du script, vous devez utiliser source ./script.sh ou la notation abrégée pour la source, ".", comme . ./script.sh

La source exécutera les commandes dans le script comme si vous les avez tapées dans ... donc cela change certains aspects du script, tels que la sortie ... donc si votre script vérifie quelque chose et décide de quitter si faux, Par exemple, en appelant exit 0 , cela terminera votre session de terminal / shell actuelle.

    
réponse donnée m0bl 16.03.2018 - 16:09
la source
1

Si vous faites des choses via un script, un moyen simple de définir la variable d'environnement de manière permanente est placé sous l'instruction dans votre script,

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

Si vous avez besoin d’évaluer des expressions comme pwd, vous pouvez par exemple utiliser

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
    
réponse donnée ShitalShah 12.07.2017 - 04:06
la source

Lire d'autres questions sur les étiquettes