Je suis sous Ubuntu 11.04. J'utilise le terminal pour démarrer une session bash, et je veux ajouter une variable d'environnement :
$r@hajt:~$ env THEVAR=/example
Mais cela ne fonctionne pas. Il affiche toutes les variables, THEVAR étant la dernière, mais un autre appel à env
ne montre plus THEVAR
- env | grep THEVAR
ne retourne rien.
De même, les scripts avec exportation (export THEVAR=/exemple
) ou autres assignations de variables (THEVAR=/exemple
) n'ajoutent 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 n’arrive pas à trouver 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
(Quoi qu'il en soit, je choisirai la réponse la plus votée et laisserai le titre modifié - ce n'était pas ce que je demandais).
env
exécute un programme dans un environnement modifié, puis annule toutes les modifications.
Pour définir la variable seulement pour le shell actuel :
VARNAME="my value"
Pour la définir pour le shell actuel 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 l'activer de façon permanente et système entier (tous les utilisateurs, tous les processus), ajoutez la variable set dans /etc/environnement :
sudo -H gedit /etc/environment
Ce fichier n'accepte que les affectations de variables comme :
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 changements de variables d'environnement aient lieu.
Pour définir une variable d'environnement une seule fois, utilisez la commande export
dans l'invite, et non dans un script shell :
$ export THEVAR=/example
La variable sera définie pour le reste de la session du shell ou jusqu'à ce qu'elle soit désactivée.
Pour définir une variable d'environnement à chaque fois, utilisez la commande export
dans le 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 sourcez
le script. Si vous exécutez le script, il ne fonctionnera pas.
Pour une explication de la différence entre sourcer et exécuter, 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 de façon permanente une nouvelle variable d'environnement dans Ubuntu (testé uniquement dans la version 14.04), procédez comme suit :
sudo -H gedit /etc/environment
FOO=bar
, écrivez simplement FOO=bar
dans une nouvelle ligne.