Próbowałem wykonać następujące polecenie, aby ustawić serwer proxy na yaourt
:
export ALL_PROXY=http://proxy.example.com:8080
Pytanie brzmi, jak wyłączyć serwer proxy na yaourt
? Ogólnie, jak mogę usunąć wartość zmiennej w bieżącej powłoce?
Komentarze
Odpowiedz
Aby usunąć zmienną środowiskową, uruchom
unset ALL_PROXY
Zwróć uwagę, że zmienna środowiskowa działa tylko w programie i programie, uruchamia się. 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 inicjalizacyjnego, usuń stamtąd.
Możesz uruchomić export
bez 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ć, albo uruchamiając export VAR
po przypisaniu VAR=VALUE
lub łącząc te dwa elementy (export VAR=VALUE
).
Komentarze
- Myślę, że nie jest konieczne, aby
export VAR
występował po przypisaniu. Obserwuj:sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F'
drukuje " F2 = 2 \ nF1 = 2 ". -
unset
jest również wymagany do wyczyszczenia asocjacyjnych tablic bash (np. bash " tablice skrótów " lub " dicts "), jak wyjaśniono w tym samouczku w sekcji zatytułowanej " Czyszczenie ": artificialworlds.net/blog/2012/10/17/… .
Odpowiedź
Aby usunąć powiązaną zmienną w bash, użyj unset VARIABLE
(w twoim przypadku unset ALL_PROXY
). To polecenie faktycznie usuwa zmienną. Możesz również ustawić wartość zmiennej jako pustą, wykonując
VARIABLE=
lub
VARIABLE=""
Różnica polega na tym, że dwa ostatnie polecenia nie usuwają zmiennej. Różnicę można zobaczyć, używając flagi -u
z set
aby zmusić go do traktowania nieustawionych 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 na var
jest niezwiązany (po usunięciu jego wartości), co jest oczekiwanym błędem (zwróć uwagę, że nie dzieje się to w drugim poleceniu echo, co oznacza, że var
ma wartość empty
lub null
).
Komentarze
- co jeśli mam zmienną w swoim pliku skryptu powłoki i źródłuję ten plik, więc jak mam to usunąć?
- @Abhinav użyj
unset
w skrypcie. To samo dotyczy.
unset ALL_PROXY
$ ALL_PROXY=http://proxy.example.com:8080 yaourt
, który ustawi zmienną środowiskową tylko dla polecenia uruchom . Przed wykonaniem polecenia możesz umieścić dowolną liczbęFOO=bar BAZ=bat
zmiennych.