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 montre THEVAR
plus - env | grep THEVAR
ne renvoie rien.
De même, les scripts avec export ( export THEVAR=/example
) ou d'autres variables assignments ( THEVAR=/example
) 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 ne trouve pas quoi.
MISE À JOUR: Le sens réel 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 rejette toutes les modifications.
THEVAR=/example
vousRéponses:
Pour définir une variable uniquement pour le shell actuel:
Pour le définir pour le shell actuel et tous les processus démarrés à partir du shell actuel:
Pour le définir de manière permanente pour toutes les futures sessions bash, ajoutez cette ligne à votre
.bashrc
fichier dans votre$HOME
répertoire.Pour le définir de manière permanente et à l'échelle du système (tous les utilisateurs, tous les processus), ajoutez la variable set dans / etc / environment:
Ce fichier accepte uniquement les affectations de variables telles que:
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.
la source
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
help.ubuntu.com/community/EnvironmentVariablesecho $myvar
Pour définir une variable d'environnement une fois, utilisez la
export
commande dans l'invite, et non dans un script shell:La variable sera définie pour le reste de la session shell ou jusqu’à sa suppression.
Pour définir une variable d'environnement à chaque fois, utilisez la
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
export
commande du script, puissource
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: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-et-sourcing-a- bash-script / 176788 # 176788
la source
Pour ajouter de manière permanente une nouvelle variable d’environnement dans Ubuntu (testé uniquement dans 14.04), procédez comme suit:
sudo -H gedit /etc/environment
par exemple, si vous voulez ajouter
FOO=bar
, écrivez simplementFOO=bar
dans une nouvelle lignela source
sudo gedit
(voir askubuntu.com/questions/270006/… ) etchmod 777
. Ce dernier ne devrait jamais être fait sur un fichier de configuration système.if
outest
).Foo="bar"
?Pour que les modifications de l'environnement / var persistent après la fin du script, vous devez utiliser
source ./script.sh
la notation abrégée pour la source, ".", Comme. ./script.sh
Source exécutera les commandes du script comme si vous les aviez saisies ... cela modifiera donc 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, via un appel
exit 0
, il mettra fin à votre session de terminal / shell en cours.la source
Si vous faites des choses via un script, un moyen simple de définir une variable d'environnement de manière permanente est placé sous l'instruction dans votre script,
Si vous devez évaluer des expressions telles que pwd, vous pouvez utiliser ceci, par exemple,
la source
Je sais que c'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) Ouvrez
/etc/bash.bashrc
avec nano (vous pouvez utiliser n’importe quel éditeur, je ne préfère pas le VIM, c’est le pire problème en termes de convivialité - rien de personnel).2) Ajouter au fichier:
export VAR=path export PATH=$PATH:/bin
3) (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 distinct pour cela, vous devez modifier (scripté) le
.bashrc
fichier sous~/.bashrc
(ou/home/$USER/
si vous êtes nouveau sur les systèmes Linux)la source