내 보낸 환경 변수를 어떻게 삭제합니까?


1556

gnuplot을 설치하기 전에 환경 변수를 설정했습니다 GNUPLOT_DRIVER_DIR = /home/gnuplot/build/src. 설치하는 동안 문제가 발생했습니다.

GNUPLOT_DRIVER_DIR환경 변수 를 제거하고 싶습니다 . 어떻게하면 되나요?


2
Fish shell에서이 작업을 수행하는 방법을 찾는 사람들은 stackoverflow.com/questions/30703860/… (이 질문이 특정 쉘이 아니더라도)를 참조하십시오
Elijah Lynn

답변:


2463

unset 찾고있는 명령입니다.

unset GNUPLOT_DRIVER_DIR

5
그러나 이것은 세션에서만 작동합니다. 확실히 설정을 해제하는 것은 어떻습니까? 또는 변수 세트가 어디에 있는지 검색하면 가서 삭제할 수 있습니까?
eLRuLL

31
이것은 터미널 인스턴스마다 작동해야합니다. 일반적으로 터미널 창이 열릴 때마다 ~ / .bashrc, ~ / .profile 등과 같은 다양한 위치에서 변수가로드됩니다. 한 터미널 인스턴스에서 설정 한 변수는 다른 터미널로 전달되지 않습니다. 터미널을 열 때마다 자동으로 설정되는 변수가있는 경우 홈 디렉토리에서 다양한 숨김 파일을 찾아보십시오. 또는 설정중인 위치를 보려면 "grep -r <X> ~"를 시도하십시오. 여기서 <X>는 변수의 이름입니다. 홈 디렉토리에 많은 파일이 있으면 시간이 걸릴 수 있습니다.
matt5784

1
이것은 쉘에서도 변수를 제거합니다. 할 수있는 유일한 방법인가 unexport할 수는 T="$MYVAR"; unset MYVAR; MYVAR="$T"; unset T?
olejorgenb

1
@olejorgenb 적어도 bash에서는 declare +x MYVAR내보내기를 제거하지만 현재 쉘에 값을 유지 한다고 말할 수 있습니다 .
Peder Klingenberg

4
@PederKlingenberg export -n MYWAR는 Bash에서도 잘 작동합니다.
jarno

170

bash에서 환경 변수를 만들고 삭제하는 연습 :

DUALCASE 변수가 존재하는지 테스트하십시오.

el@apollo:~$ env | grep DUALCASE
el@apollo:~$ 

변수가 아니므로 변수를 작성하고 내보내십시오.

el@apollo:~$ DUALCASE=1
el@apollo:~$ export DUALCASE

그것이 있는지 확인하십시오 :

el@apollo:~$ env | grep DUALCASE
DUALCASE=1

저기있어. 따라서 제거하십시오.

el@apollo:~$ unset DUALCASE

여전히 존재하는지 확인하십시오.

el@apollo:~$ env | grep DUALCASE
el@apollo:~$ 

DUALCASE 내 보낸 환경 변수가 삭제됩니다.

지역 및 환경 변수를 지우는 데 도움이되는 추가 명령 :

로그인시 모든 로컬 변수를 기본값으로 다시 설정 해제하십시오.

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 명령은 환경 변수가 아닌 모든 로컬 변수를 지 웁니다.

로그인시 모든 환경 변수를 기본값으로 다시 설정 해제하십시오.

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 명령은 로그인시 모든 환경 변수를 기본값으로 지 웁니다.


10
어쩌면 echo $VARIABLE보다 더 나은 env | grep VARIABLE그것은 모든 변수를 인쇄 한 다음 다른 (그렙) 프로세스에 출력을 보낼 필요하지 않기 때문에 가볍다. 또한 env | VARIABLE동일한 패턴과 일치하는 둘 이상의 변수를 잡을 수 있습니다. Plus2에서는 echo $VARIABLE<Tab> 키를 눌러 변수 이름을 완성 할 수 있습니다 (있는 경우, 수행하려는 작업에 대한 힌트 일 수도 있음).
Rodrigo Gurgel

10
'env | 그렙 변수는 내가 진정으로 사라 말할 수 있기 때문에 '$ 변수를 에코'보다 더 '가
calasyr

8
@RodrigoGurgel echo $VARIABLE은 VARIABLE이 쉘 변수 (여기서는 "로컬 변수"라고 함)인지 아니면 환경 변수 (워크 스루의 요점)인지 알려주지 않습니다.
hmijail의 신음은 resignees

4
참고 env -i bash의도하지 않은 결과를 초래할 수 있습니다 (Mac에서 적어도) 서브 쉘을 만들 것으로 보인다.
Mark Chackerian

2
echo를 사용하는 @RodrigoGurgel은 기존 변수 세트를 빈 문자열 또는 널로 표시하지 않습니다. 그러나 변수를 테스트하는 적절한 방법은입니다 env | grep -e '^VARNAME='.
Thomas

5

원래 질문에 변수가 어떻게 설정되었는지 언급하지 않았고이 특정 답변을 찾는이 페이지에 왔기 때문에 다음을 추가하고 있습니다.

C 쉘 (csh / tcsh) 에는 환경 변수를 설정하는 두 가지 방법이 있습니다.

  1. set x = "something"
  2. setenv x "something"

동작의 차이점은 setenv 명령으로 설정된 변수 는 자동으로 서브 쉘로 내보내지고 set으로 설정된 변수 는 그렇지 않습니다.

의 변수 세트의 설정을 해제하려면 설정 , 사용

unset x

의 변수 세트의 설정을 해제하려면 에서는 setenv , 사용

unsetenv x

참고 : 위의 모든 변수 이름은 'x'라고 가정합니다.

크레딧 :

https://www.cyberciti.biz/faq/unix-linux-difference-between-set-and-setenv-c-shell-variable/ https://www.oreilly.com/library/view/solaristm-7- reference / 0130200484 / 0130200484_ch18lev1sec24.html


set / setenv wrt 서브 쉘의 차이점에 대한 추가!
레벨

4

이것은 또한 작동 할 수 있습니다.

export GNUPLOT_DRIVER_DIR=

10
변수는 여전히 존재하지만 env명령 출력에서 볼 수 있듯이 빈 문자열이 포함되어 있습니다 . 변수를 사용하는 응용 프로그램이 존재하지 않는 환경 변수와 비어있는 환경 변수를 구별하지 않는 경우 일 수 있습니다.
Palec

1
예, 변수를 제거하지 않고 값을 제거하는 것이 었습니다. 그러나 네, 사용할 수 있습니다-unset GNUPLOT_DRIVER_DIR.
Nilesh K.

PAGER 변수의 경우에는 작동하지 않습니다. PAGER 설정을로 설정을 해제하려고했지만 export PAGER=페이징을 완전히 비활성화했습니다. 모든 설명서 페이지가 터미널에 바로 덤프되었습니다. unset PAGER트릭을 수행하여 기본 동작으로 되돌 렸습니다.
Chad

1

위의 답변에서 언급했듯이 변수를 설정하는 unset GNUPLOT_DRIVER_DIR데 사용한 경우 작동해야 export합니다. 당신이 영구적으로 설정 한 경우 ~/.bashrc또는 ~/.zshrc단순히이 작동에서 제거.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.