스크립트는 http_proxy를 export하고 “enabled”를 출력한 뒤 종료합니다. 그 뒤 원래 터미널에서 시작한 Curl은 여전히 예전 환경을 그대로 갖습니다.

스크립트 실행은 자식 프로세스를 만들었습니다. export는 그 프로세스의 자식에게 값을 넘길 뿐, 값을 부모 셸로 되돌려 보내지 않습니다. export를 bash -c나 백틱 안에 넣어도 이 관계가 뒤집히지는 않습니다.

대화형 전환에는 현재 셸에 정의한 함수가 의도한 작업을 할 수 있습니다:

proxy_on() {
    export http_proxy=http://proxy.example.net:8080
    export https_proxy="$http_proxy"
}

예시 엔드포인트를 자신의 HTTP 서비스나, 허용된 공개 요청을 위한 HTTP 프록시 목록의 후보로 바꾸세요. 정의를 로드한 뒤 함수를 호출합니다. source한 셸 파일은 새 셸이 아니라 현재 셸에서 대입을 실행하는 또 다른 방법입니다.

기존 GUI 애플리케이션과 다른 터미널은 각자의 환경을 그대로 유지합니다. 도우미가 프록시를 거치는 명령 하나만 실행하기 위한 것이라면, 변경을 그 명령의 환경 안에 두는 것이 대개 정확한 범위입니다.

관련 글