Comment ajouter des variables d'environnement?

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

$r@hajt:~$ env THEVAR=/example

Mais ça ne marche pas. Il montre toutes les variables avec THEVAR étant la dernière, mais un autre appel à env ne s'affiche pas THEVAR plus- env | grep THEVAR ne renvoie rien.

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

Je sais que je fais quelque chose de mal, je sais que ça devrait être quelque chose de simple, mais je ne trouve pas quoi.

MISE À JOUR: Le vrai sens de ma question était celui-ci: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(De toute façon, 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.

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

VARNAME="my value"

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

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

Pour le régler permanent pour toutes les futures sessions bash, ajoutez une telle ligne à votre .bashrc fichier dans votre $HOME répertoire.

Pour le fixer en permanence, et à l'échelle du système (tous les utilisateurs, tous les processus) ajouter une variable set dans /etc / environment:

sudo -H gedit /etc/environment

Ce fichier accepte uniquement les affectations de variables comme:

VARNAME="my value"

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

Vous devez vous déconnecter de l'utilisateur actuel et vous reconnecter pour que les modifications des variables d'environnement aient lieu.

Pour définir une variable d'environnement une fois, utilisez la commande export commande 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 ne soit pas définie.

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

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

Pour une explication de la différence entre le sourcing et l'exécution, voir cette réponse: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

Pour ajouter définitivement une nouvelle variable d'environnement dans Ubuntu (testée uniquement dans la version 14.04), procédez comme suit:

  1. Ouvrir un terminal (en appuyant sur CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. Saisissez votre mot de passe
  4. Modifier le fichier texte qui vient d'être ouvert:
    par exemple, si vous souhaitez ajouter FOO=bar, alors é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.

Pour que les modifications d'environnement/var persistent une fois le script terminé, vous devez utilisersource ./script.sh ou la notation abrégée pour la source,".", comme . ./script.sh

Source exécutera les commandes du script comme si vous les aviez tapées... cela change donc certains aspects du script, comme la sortie... donc, si votre script vérifie quelque chose et décide de quitter si false, par exemple, via un appel exit 0, il mettra fin à votre session de terminal / shell actuelle.

Je sais qu'il est assez tard, mais si vous souhaitez ajouter une variable d'environnement pour tous les utilisateurs (par exemple, l'utilisation de JAVA), vous pouvez procéder comme suit:

1) Ouvrir /etc/bash.bashrc en utilisant nano (vous pouvez utiliser n'importe quel éditeur, je ne préfère pas VIM car c'est le pire en matière de convivialité - rien de personnel).

2) Ajouter au fichier:

export VAR=path export PATH=$PATH:/bin3) (Mieux si vous pouvez faire rebondir la boîte) - ou ouvrez simplement une nouvelle session SSH et confirmez en utilisant la commande 'env'.

MAIS SI vous voulez que chaque utilisateur ait un paramètre séparé pour cela, vous devez apporter une modification (scriptée) à .bashrc fichier sous ~/.bashrc (ou /home/$USER/ si vous êtes nouveau sur les systèmes Linux)

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

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

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

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc

Si vous utilisez Ubuntu ou un système basé sur Unix, exportez les variables dans le ~/.bashrc fichier. C'est un fichier caché et vous pouvez y accéder via le terminal ou en affichant les fichiers cachés dans le système de fichiers.

Ensuite, modifiez le fichier et définissez export THEVAR=/example là, économisez et c'est fait.