_PROXY와 일치하는 모든 ENV 변수를 설정 해제합니다.

_PROXY와 일치하는 모든 ENV 변수를 설정 해제합니다.

일치하는 모든 환경 변수를 설정 해제하려고 합니다 _PROXY.

env | grep -i _proxy | column -t -s '=' | awk '{ print $1 }' | grep -iv 'no_proxy' | xargs -0 -I variable unset variable

그러나 그것은 실패했다 xargs: unset: No such file or directory.

unset그러나 으로 변경하려고 하면 echo모든 것이 예상대로 작동하는 것 같습니다. 설정된 변수 목록이 표시됩니다.

env | grep -i _proxy | column -t -s '=' | awk '{ print $1 }' | grep -iv 'no_proxy' | xargs -0 -I variable echo variable
http_proxy
ftp_proxy
FTP_PROXY
https_proxy
HTTPS_PROXY
HTTP_PROXY

무엇이 잘못되고 있는 것 같나요? (귀하의 목표 달성을 위한 대안적인 전략이 있다면 관심이 가겠지만,가장 중요한 것은왜 실패했는지 궁금합니다. )

또한 관련성이 있는 경우를 대비해 OS X를 사용하고 있습니다.

답변1

그 이유는 unset다음과 같습니다.내장 케이스외부 명령보다는 이는 xargs실행만 하기 때문에 사용할 수 없음을 의미합니다 $PATH. 다음 방법을 사용하려고 하면 동일한 문제가 발생합니다 cd.

$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun 16 02:02 foo
$ echo foo | xargs cd
xargs: cd: No such file or directory

이 문제를 해결하는 한 가지 방법은 쉘 루프를 사용하는 것입니다. 이는 쉘의 일부이므로 쉘 내장 명령을 실행할 수 있습니다. 또한 명령을 약간 단순화했습니다. 아니요. column필드 구분 기호를 설정할 수 awk있으며 두 번째 구분 기호는 필요하지 않습니다 . 일치하지 않는 줄을 인쇄하라고 grep지시하면 됩니다 .awkno_proxy

while read var; do unset $var; done < <(env | grep -i proxy | 
    awk -F= '!/no_proxy/{print $1}')

답변2

unset `env | grep _PROXY | egrep -o '^[^=]+'`

답변3

terdon이 작성한 답변과 유사하지만 다음을 포함합니다 sed.

while read var; do unset $var; done < <(env | grep -i _proxy | sed 's/=.*//g')

관련 정보