Comment définir plusieurs variables d'environnement pour une commande bash

109

Je suis censé définir les variables EC2_HOME et JAVA_HOME avant d'exécuter une commande (ec2-describe-regions)

Comment faire cela en une seule fois?

SamLosAngeles
la source

Réponses:

165

Vous pouvez définir des variables uniques pour une seule commande en les plaçant sur la ligne de commande avant la commande:

$ EC2_HOME=/path/to/dir JAVA_HOME=/other/path ec2-describe-regions

Vous pouvez également les exporter dans l'environnement, auquel cas ils seront définis pour toutes les commandes futures:

$ export EC2_HOME=/path/to/dir
$ export JAVA_HOME=/other/path
$ ec2-describe-regions
Chris Dodd
la source
7
Notez que, bien que cela semble rare, vous pouvez également écrire export EC2_HOME=/path JAVA_HOME=/path.
William Pursell
4
L'option unique est très utile dans les scripts. Juste une note pour tous ceux qui ont besoin d'exécuter la commande en tant que root ou un autre utilisateur, les variables doivent venir après sudo ou l'utilisateur. Par exemplesudo -u somebody CVSROOT=:ext:[email protected]:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
Nagev
Y a-t-il une limite au nombre de variables que vous pouvez fournir via le préfixe?
Sam Thomas
Juste la limite de longueur maximale de la ligne de commande, qui est assez grande sous Linux.
Chris Dodd
2

Comme tout autre système * nix, vous pouvez ajouter la fonction suivante dans votre fichier .bashrc sous votre répertoire HOME.

function startec2(){
    EC2_HOME=/path/to/dir
    JAVA_HOME=/other/path 
    ec2-describe-regions
}

Maintenant, vous pouvez démarrer votre programme par la commande suivante:

startec2
gzh
la source
4
Autant que je sache, cela ne crée que des variables bash et ne fonctionnera pas.
TNW