So legen Sie mehrere env-Variablen für einen Bash-Befehl fest

108

Ich soll die Variablen EC2_HOME und JAVA_HOME setzen, bevor ich einen Befehl ausführe (ec2-beschreiben-Regionen)

Wie mache ich das auf einmal?

SamLosAngeles
quelle

Antworten:

164

Sie können vars einmalig für einen einzelnen Befehl festlegen, indem Sie sie vor dem Befehl in die Befehlszeile einfügen:

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

Alternativ können Sie sie in die Umgebung exportieren. In diesem Fall werden sie für alle zukünftigen Befehle festgelegt:

$ export EC2_HOME=/path/to/dir
$ export JAVA_HOME=/other/path
$ ec2-describe-regions
Chris Dodd
quelle
7
Beachten Sie, dass Sie auch schreiben können, obwohl dies ungewöhnlich erscheint export EC2_HOME=/path JAVA_HOME=/path.
William Pursell
4
Die einmalige Option ist in Skripten sehr nützlich. Nur ein Hinweis für alle, die den Befehl als root oder ein anderer Benutzer ausführen müssen. Die Variablen sollten nach sudo oder dem Benutzer kommen. Zum Beispielsudo -u somebody CVSROOT=:ext:[email protected]:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
Nagev
Gibt es eine Begrenzung für die Anzahl der Variablen, die Sie über das Voranstellen angeben können?
Sam Thomas
Nur die maximale Befehlszeilenlängenbeschränkung, die unter Linux ziemlich groß ist.
Chris Dodd
2

Wie bei jedem anderen * nix-System können Sie in Ihrer .bashrc-Datei unter Ihrem HOME-Verzeichnis die folgenden Funktionen hinzufügen.

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

Jetzt können Sie Ihr Programm mit dem folgenden Befehl starten:

startec2
gzh
quelle
4
Soweit ich weiß, erstellt dies nur Bash-Variablen und funktioniert nicht.
TNW