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?

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

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:somebody@12.18.127.22:/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

4
Soweit ich weiß, erstellt dies nur Bash-Variablen und funktioniert nicht.
TNW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.