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?

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

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

4
O ile wiem, tworzy to tylko zmienne bash i nie zadziała.
TNW
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.