한 번의 다운로드만 다른 프록시를 쓰고, 그 뒤에는 모두 평소대로 돌아오길 원한다고 해 봅니다. 셸 시작 파일을 편집한 뒤 되돌리는 것을 기억해야 할 필요는 없습니다.

POSIX 스타일 셸에서 외부 명령을 쓸 때는 대입을 명령 앞에 둡니다.

https_proxy=http://proxy.example:8080 curl https://example.com/

그 다운로드용으로 의도된 HTTP 엔드포인트를 사용하십시오. HTTP 프록시 목록은 허용된 공용 경로의 후보를 제공합니다. 대입은 해당 명령의 환경에 전달됩니다. 자식 프로세스는 값을 상속할 수 있지만, 명령이 끝난 뒤 대입이 상위 셸의 기존 값을 바꾸지는 않습니다.

무엇을 읽을지 결정하는 것은 여전히 클라이언트입니다

셸 문법은 환경을 만들 뿐 네트워크 경로를 강제하지 않습니다. 애플리케이션이 지원하는 변수 이름을 사용하십시오. 기존 우회 변수, 명시적 명령 옵션 또는 애플리케이션 자체 설정이 결과에 계속 영향을 줄 수 있습니다.

Bash 환경 문서는 명령 접두사의 동작을 설명합니다. 셸 함수, 특수 내장 명령 또는 셸 문법인 명령에는 추가 범위 규칙이 있을 수 있으므로 위의 단순한 예시는 의도적으로 외부 프로그램을 사용합니다.

여러 명령에는 서브셸을 사용하십시오

(
  export http_proxy=http://proxy.example:8080
  export https_proxy=http://proxy.example:8080
  command-one
  command-two
)

괄호로 묶인 그룹은 자체 셸 환경에서 실행됩니다. 예시의 명령 이름은 실제로 실행하려는 프로그램으로 바꾸십시오. 이 패턴은 이전 값을 저장하고 덮어쓴 뒤 발생 가능한 모든 실패 후에 손으로 복원하는 취약한 절차를 피합니다.

셸 기록에 복사되는 예시에는 비밀을 넣지 마십시오. 또한 sudo가 환경을 걸러낼 수 있다는 점을 기억하십시오. 외부 명령에 보이는 변수가 모든 권한 경계를 자동으로 통과하지는 않습니다. 임시 범위와 실제 프록시 선택은 별개의 문제입니다.

관련 글