Jak rozbroić zmienną w wierszu poleceń?


80

Próbowałem wykonać następujące polecenie, aby ustawić serwer proxy yaourt:

export ALL_PROXY=http://proxy.example.com:8080

Pytanie brzmi: jak wyłączyć proxy yaourt? Ogólnie, jak mogę rozbroić wartość zmiennej w bieżącej powłoce?


7
Spróbujunset ALL_PROXY
coffeMug

@coffeMug może również zrobić z tego odpowiedź, możesz również rozważyć kradzież niektórych informacji stąd: stackoverflow.com/a/12263914/1081936
terdon

oprócz zaakceptowanej odpowiedzi, jeśli często uruchamiane jest polecenie, które używa zmiennej środowiskowej, której wolałbyś nie ustawiać lub zmieniać przez resztę sesji powłoki, możesz uruchomić ją w następujący sposób: $ ALL_PROXY=http://proxy.example.com:8080 yaourtustawi envvar tylko dla polecenie uruchomienia. FOO=bar BAZ=batPrzed uruchomieniem polecenia możesz wstawić tyle zmiennych, ile chcesz.
brak

Odpowiedzi:


112

Aby usunąć zmienną środowiskową, uruchom

unset ALL_PROXY

Zauważ, że zmienna środowiskowa działa tylko w programie i programie, który uruchamia. Jeśli ustawisz zmienną środowiskową w jednym oknie powłoki, nie wpłynie to na inne okna powłoki.

Jeśli dodałeś export ALL_PROXY=…do pliku inicjującego, usuń go stamtąd.

Możesz uruchomić exportbez argumentów, aby zobaczyć, jakie zmienne środowiskowe są ustawione w bieżącej powłoce.

Pamiętaj, że aby udostępnić zmienną powłoki programom uruchamianym przez tę powłokę, musisz ją wyeksportować, uruchamiając ją export VARpo przypisaniu VAR=VALUElub łącząc dwa ( export VAR=VALUE).


19

Aby rozbroić zmienną powiązaną w bash, użyj unset VARIABLE( unset ALL_PROXYw twoim przypadku). To polecenie faktycznie usuwa zmienną. Możesz także ustawić wartość zmiennej, która ma być pusta

VARIABLE=

lub

VARIABLE=""

Różnica polega na tym, że dwa ostatnie polecenia nie usuwają zmiennej. Różnicę można zobaczyć, używając -uflagi z, setaby zmusić ją do traktowania nieuzbrojonych zmiennych jako błędu podczas podstawiania:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable

W powyższym przykładzie bash narzeka, że ​​nie varma związku (po rozbrojeniu jego wartości), co jest oczekiwanym błędem (zauważ, że nie dzieje się to w drugim poleceniu echa, co oznacza, że varma wartość, która jest emptylub null).


co jeśli mam zmienną w pliku skryptu powłoki i źródło tego pliku, to jak mam to rozbroić?
Abhinav

Wykorzystanie @Abhinav unsetw skrypcie. To samo dotyczy.
coffeMug
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.