Jak ustawić wiele zmiennych env dla polecenia bash

109

Mam ustawić zmienne EC2_HOME i JAVA_HOME przed uruchomieniem polecenia (ec2-opis-regiony)

Jak mam to zrobić za jednym razem?

SamLosAngeles
źródło

Odpowiedzi:

165

Możesz jednorazowo ustawić zmienne dla pojedynczego polecenia, umieszczając je w wierszu poleceń przed poleceniem:

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

Alternatywnie możesz wyeksportować je w środowisku, w którym to przypadku zostaną ustawione dla wszystkich przyszłych poleceń:

$ export EC2_HOME=/path/to/dir
$ export JAVA_HOME=/other/path
$ ec2-describe-regions
Chris Dodd
źródło
7
Pamiętaj, że chociaż wydaje się to rzadkie, możesz także pisać export EC2_HOME=/path JAVA_HOME=/path.
William Pursell
4
Opcja jednorazowa jest bardzo przydatna w skryptach. Tylko uwaga dla każdego, kto musi wykonać polecenie jako root lub inny użytkownik, zmienne powinny pojawić się po sudo lub po użytkowniku. Na przykładsudo -u somebody CVSROOT=:ext:[email protected]:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
Nagev
Czy istnieje ograniczenie liczby zmiennych, które można podać za pomocą wyprzedzenia?
Sam Thomas
Tylko maksymalny limit długości wiersza poleceń, który jest dość duży w systemie Linux.
Chris Dodd,
2

Podobnie jak w innych systemach * nix, możesz dodać następujące funkcje do swojego pliku .bashrc w swoim katalogu HOME.

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

Teraz możesz uruchomić program za pomocą następującego polecenia:

startec2
gzh
źródło
4
O ile wiem, tworzy to tylko zmienne bash i nie zadziała.
TNW