명령 줄에서 변수 설정을 해제하려면 어떻게합니까?

yaourt에서 프록시를 설정하기 위해 다음 명령을 시도했습니다.

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

문제는 yaourt에서 프록시를 설정 해제하는 방법입니다. 일반적으로 현재 셸에서 변수 값을 설정 해제하려면 어떻게해야합니까?

코멘트

  • unset ALL_PROXY
  • @coffeMug가 답으로 만들 수도 있습니다. 여기에서 정보를 훔치는 것도 고려할 수 있습니다. stackoverflow.com/a/12263914 / 1081936
  • 허용 된 답변 외에도 ' 사용자가 자주 실행하는 환경 변수를 사용하는 명령이있는 경우 ' 나머지 셸 세션에 대해 설정하거나 변경하지 않고 다음과 같이 실행할 수 있습니다. $ ALL_PROXY=http://proxy.example.com:8080 yaourt 명령 실행에 대해서만 envvar를 설정합니다. . 명령을 실행하기 전에 원하는만큼 FOO=bar BAZ=bat 변수를 넣을 수 있습니다.

답변

환경 변수를 제거하려면 다음을 실행하십시오.

unset ALL_PROXY 

환경 변수는 프로그램 및 프로그램에서만 적용됩니다. 시작합니다. 하나의 셸 창에서 환경 변수를 설정하면 “다른 셸 창에 영향을주지 않습니다.

초기화 파일에 export ALL_PROXY=…를 추가 한 경우

인수없이 export를 실행하여 현재 셸에 설정된 환경 변수를 확인할 수 있습니다.

해당 셸로 시작된 프로그램에서 셸 변수를 사용할 수 있도록하려면 할당 VAR=VALUE 후에 export VAR를 실행하여 내 보내야합니다. 또는 둘을 결합하여 (export VAR=VALUE).

댓글

  • 그것 같아요 '는 할당 후에 export VAR가 발생해야하는 필수는 아닙니다. 관찰 : sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F'는 " F2 = 2 \ nF1 = 2 "를 인쇄합니다.
  • unset는 연관 bash 배열을 지우는데도 필요합니다 (예 : bash " 해시 테이블 " 또는 " dicts "),이 가이드는 " 삭제 " : artificialworlds.net/blog/2012/10/17/ … .

Answer

bash에서 바인딩 된 변수를 설정 해제하려면

(unset ALL_PROXY). 이 명령은 실제로 변수를 삭제합니다.

VARIABLE= 

또는

VARIABLE="" 
차이점은 후자의 두 명령은 변수를 삭제하지 않는다는 것입니다. set와 함께 -u 플래그를 사용하면 차이점을 확인할 수 있습니다. 대체하는 동안 설정되지 않은 변수를 오류로 처리하도록 강제하려면 :

/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 

위의 예에서 bash는 var는 예상 된 오류 인 바인딩 해제 (값 설정 해제 후)입니다 (두 번째 echo 명령에서는 발생하지 않습니다. 즉, var의 값은

또는 null).

댓글

  • 쉘 스크립트 파일에 변수가 있고 해당 파일을 소싱 한 다음 설정을 해제하려면 어떻게해야합니까?
  • @Abhinav 스크립트에서 unset를 사용합니다. 적용됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다