Przed zainstalowaniem gnuplot ustawiam zmienną środowiskową GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src
. Podczas instalacji coś poszło nie tak.
Chcę usunąć GNUPLOT_DRIVER_DIR
zmienną środowiskową. Jak mogę to osiągnąć?
Przed zainstalowaniem gnuplot ustawiam zmienną środowiskową GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src
. Podczas instalacji coś poszło nie tak.
Chcę usunąć GNUPLOT_DRIVER_DIR
zmienną środowiskową. Jak mogę to osiągnąć?
Odpowiedzi:
unset
to polecenie, którego szukasz.
unset GNUPLOT_DRIVER_DIR
unexport
na zrobienie tego T="$MYVAR"; unset MYVAR; MYVAR="$T"; unset T
?
declare +x MYVAR
aby usunąć eksport, ale zachowaj wartość w bieżącej powłoce.
export -n MYWAR
działa również w Bash.
Sprawdź, czy istnieje zmienna DUALCASE:
el@apollo:~$ env | grep DUALCASE
el@apollo:~$
Nie robi tego, więc utwórz zmienną i wyeksportuj ją:
el@apollo:~$ DUALCASE=1
el@apollo:~$ export DUALCASE
Sprawdź, czy tam jest:
el@apollo:~$ env | grep DUALCASE
DUALCASE=1
Jest tam. Pozbądź się tego:
el@apollo:~$ unset DUALCASE
Sprawdź, czy nadal tam jest:
el@apollo:~$ env | grep DUALCASE
el@apollo:~$
Wyeksportowana zmienna środowiskowa DUALCASE jest usuwana.
Zresetuj wszystkie lokalne zmienne do wartości domyślnych podczas logowania:
el@apollo:~$ CAN="chuck norris"
el@apollo:~$ set | grep CAN
CAN='chuck norris'
el@apollo:~$ env | grep CAN
el@apollo:~$
el@apollo:~$ exec bash
el@apollo:~$ set | grep CAN
el@apollo:~$ env | grep CAN
el@apollo:~$
exec bash
polecenie wyczyściło wszystkie zmienne lokalne, ale nie zmienne środowiskowe.
Przywróć wszystkie zmienne środowiskowe do wartości domyślnych podczas logowania:
el@apollo:~$ export DOGE="so wow"
el@apollo:~$ env | grep DOGE
DOGE=so wow
el@apollo:~$ env -i bash
el@apollo:~$ env | grep DOGE
el@apollo:~$
env -i bash
polecenie wyczyściło wszystkie zmienne środowiskowe do domyślnych podczas logowania.
echo $VARIABLE
jest lepszy niż env | grep VARIABLE
, jest lżejszy, ponieważ nie musi drukować wszystkich zmiennych, a następnie wysyłać dane wyjściowe do innego procesu (grep). Ponadto env | VARIABLE
może wychwycić więcej niż jedną zmienną pasującą do tego samego wzorca. Plus2, echo $VARIABLE
umożliwia uzupełnienie nazwy zmiennej poprzez wciśnięcie <Tab> (jeśli istnieje, może to być również wskazówka do tego, co chcesz zrobić).
echo $VARIABLE
nie mówi ci, czy VARIABLE jest zmienną powłoki (tutaj nazywaną „zmienną lokalną”) czy zmienną środowiskową, która jest całym punktem instrukcji.
env -i bash
wydaje się, że tworzy podpowłokę (przynajmniej na komputerze Mac), co może mieć niezamierzone konsekwencje.
env | grep -e '^VARNAME='
.
Ponieważ oryginalne pytanie nie wspomina o tym, jak zmienna została ustawiona, i ponieważ doszedłem do tej strony, szukając tej konkretnej odpowiedzi, dodaję:
W powłoce C (csh / tcsh) istnieją dwa sposoby ustawienia zmiennej środowiskowej:
set x = "something"
setenv x "something"
Różnica w zachowaniu polega na tym, że zmienne ustawione za pomocą polecenia setenv są automatycznie eksportowane do podpowłoki, podczas gdy zmienne ustawione za pomocą zestawu nie są.
Aby rozbroić zestaw zmiennych za pomocą set , użyj
unset x
Aby rozbroić zestaw zmiennych za pomocą setenv , użyj
unsetenv x
Uwaga: we wszystkich powyższych przypadkach zakładam, że nazwa zmiennej to „x”.
kredyty:
https://www.cyberciti.biz/faq/unix-linux-difference-between-set-and-setenv-c-shell-variable/ https://www.oreilly.com/library/view/solaristm-7- referencja / 0130200484 / 0130200484_ch18lev1sec24.html
to może również działać.
export GNUPLOT_DRIVER_DIR=
env
polecenia. Może się tak zdarzyć, że aplikacja korzystająca ze zmiennej nie rozróżnia nieistniejącej i pustej zmiennej środowiskowej.
export PAGER=
, ale to całkowicie wyłączyło stronicowanie - wszystkie moje strony podręcznika właśnie zrzuciły prosto do terminala. unset PAGER
wykonał lewę, przywracając domyślne zachowanie.
Jak wspomniano w powyższych odpowiedziach, unset GNUPLOT_DRIVER_DIR
powinno działać, jeśli export
ustawiłeś zmienną. Jeśli ustawiłeś go na stałe, ~/.bashrc
a ~/.zshrc
następnie po prostu usunięcie go stamtąd będzie działać.