Pokusil jsem se pomocí následujícího příkazu nastavit proxy na yaourt
:
export ALL_PROXY=http://proxy.example.com:8080
Otázkou je, jak deaktivovat proxy na yaourt
? Jak mohu obecně zrušit hodnotu proměnné v aktuálním prostředí?
Komentáře
Odpovědět
Chcete-li odstranit proměnnou prostředí, spusťte
unset ALL_PROXY
Všimněte si, že proměnná prostředí se projeví pouze v programu a program jej startuje. Pokud nastavíte proměnnou prostředí v jednom okně prostředí, nebude to mít vliv na ostatní okna prostředí.
Pokud jste do inicializačního souboru přidali export ALL_PROXY=…
, odeberte odtamtud.
Můžete spustit program export
bez argumentů, abyste zjistili, jaké proměnné prostředí jsou nastaveny v aktuálním prostředí.
Nezapomeňte, že Chcete-li zpřístupnit proměnnou prostředí pro programy spuštěné tímto prostředím, musíte ji exportovat, a to buď spuštěním export VAR
po přiřazení VAR=VALUE
nebo jejich kombinací (export VAR=VALUE
).
Komentáře
- Myslím, že ' není podstatné, aby k
export VAR
došlo po přiřazení. Pozor:sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F'
tiskne " F2 = 2 \ nF1 = 2 ". -
unset
je také nutné k vymazání asociativních bash polí (tj. bash " hash tabulek " nebo " dicts "), jak tento návod vysvětluje v části s názvem " Zúčtování ": umělý svět net/blog/2012/10/17/… .
Odpověď
Chcete-li zrušit vázanou proměnnou v bash, použijte unset VARIABLE
(ve vašem případě unset ALL_PROXY
). Tento příkaz skutečně odstraní proměnnou. Hodnotu proměnné můžete také vyprázdnit pomocí
VARIABLE=
nebo
VARIABLE=""
Rozdíl spočívá v tom, že tyto dva příkazy proměnnou neodstraní. Rozdíl můžete zjistit pomocí příznaku -u
s set
přinutit ji, aby při nahrazování považovala nenastavené proměnné za chybu:
/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
Ve výše uvedeném příkladu si bash stěžuje na var
je nevázaný (po zrušení jeho hodnoty), což je očekávaná chyba (všimněte si, že k tomu nedochází ve druhém příkazu echo, což znamená, že var
má hodnotu, která je empty
nebo null
).
Komentáře
- co když mít proměnnou v mém souboru skriptu skriptu a získávám tento soubor, jak to tedy zruším?
- @Abhinav ve skriptu použije
unset
. Totéž platí.
unset ALL_PROXY
$ ALL_PROXY=http://proxy.example.com:8080 yaourt
který nastaví envvar pouze na spuštění příkazu . Před spuštěním příkazu můžete vložit tolikFOO=bar BAZ=bat
proměnných, kolik chcete.