578 votes

Comment ajouter des variables d'environnement ?

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 ça ne marche pas. Il affiche toutes les variables, THEVAR étant la dernière, mais un autre appel à env ne montre pas THEVAR plus jamais- env | grep THEVAR ne renvoie rien.

De même, les scripts avec exportation ( export THEVAR=/example ) ou d'autres affectations de variables ( THEVAR=/example ) n'ajoute 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.

UPDATE : Le vrai sens de ma question était celui-ci :

(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 annule toutes les modifications.

1 votes

Lorsqu'il est défini/exporté dans .bashrc, il fonctionne correctement.

0 votes

2 votes

Et si THEVAR=/example ?

46voto

Adam Points 6342

Pour définir une variable d'environnement une seule fois, utilisez la commande export dans l'invite, pas dans un Shell ShellscriptShell :

$ 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 fonction export dans le .bashrc (ou le fichier d'initialisation approprié pour votre Shell).

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

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

6 votes

Comment faire pour que cela ne fonctionne qu'en exécutant le script ? Sans sourcing.

25voto

user355501 Points 271

Pour ajouter de façon permanente une nouvelle variable d'environnement dans Ubuntu (testé 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. Tapez votre mot de passe
  4. Editez le fichier texte qui vient d'être ouvert :
    Par exemple, si vous voulez ajouter FOO=bar alors il suffit d'écrire FOO=bar dans une nouvelle ligne
  5. Sauvegardez-le
  6. Une fois la sauvegarde effectuée, déconnectez-vous et reconnectez-vous.
  7. Les modifications souhaitées sont effectuées.

7 votes

J'ai nettoyé ta réponse en enlevant les parties les plus dangereuses concernant sudo gedit (Voir askubuntu.com/questions/270006/ ) et chmod 777 . Ce dernier ne devrait jamais être fait sur un fichier de configuration du système.

0 votes

C'est une réponse correcte dans certains cas. Toutes les sessions, qu'il s'agisse de sessions Shell utilisateur ou non, obtiendront la valeur des variables définies ici. Il est important de noter que, bien que cela puisse ressembler à un Shell Shell, ce n'en est pas un -- il vous permet uniquement de définir des variables d'environnement (vs l'utilisation de fonctions Shell telles que. if ou test )

0 votes

Si bar est une chaîne de caractères, dois-je la mettre entre guillemets ? Comme Foo="bar" ?

12voto

ha9u63ar Points 261

Je sais que c'est un peu tard, mais si vous voulez ajouter une variable d'environnement pour tous les utilisateurs (par exemple l'utilisation de JAVA) - vous pouvez faire ce qui 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:/bin 3) (Mieux si vous pouvez rebondir sur la boîte) - ou simplement ouvrir une nouvelle session SSH et confirmer en utilisant la commande `env'.

MAIS SI vous voulez que chaque utilisateur dispose d'un paramètre distinct pour cela, vous devez apporter une modification (scriptée) à l'adresse suivante .bashrc fichier sous ~/.bashrc (ou /home/$USER/ si vous êtes novice en matière de systèmes Linux)

0 votes

Cela m'a aidé à réparer mon ~/.bashrc . Comme vous le dites, il semble qu'il doit être PATH=$PATH:/bin J'avais $PATH:/bin=PATH qui semblait fonctionner mais qui a donné lieu à des erreurs.

8voto

Shital Shah Points 588

Si vous faites des choses via , une façon simple de définir la variable d'environnement de façon permanente est de mettre la déclaration ci-dessous 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 utiliser ceci, par exemple,

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

3voto

Abhijeet Sarkar Points 31

Si vous utilisez Ubuntu ou tout autre système basé sur Unix, exportez les variables dans le fichier ~/.bashrc fichier. Il s'agit d'un fichier caché et vous pouvez y accéder par le terminal ou en démasquant les fichiers cachés dans le système de fichiers.

Ensuite, éditez le fichier et mettez export THEVAR=/example là, enregistrez et c'est fait.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X