sh 'unset http_proxy' 해당 호출을 위해 실행되는 셸을 바꿉니다. 셸이 종료되어도 Rake의 Ruby 프로세스는 원래 환경을 그대로 유지하며, 이후의 sh 호출은 그것을 다시 상속합니다.

이후 작업을 위해 Ruby 프로세스를 바꾸려면:

ENV.delete('http_proxy')
ENV.delete('HTTP_PROXY')

이것은 이후의 자식 프로세스와 그 키를 읽는 Ruby 코드에 영향을 줍니다. Rake를 처음 실행한 터미널을 다시 구성하지는 않습니다.

자식 명령 하나에 대해서는 그 환경을 직접 지정하세요:

sh(
  { 'http_proxy' => nil, 'HTTP_PROXY' => nil },
  'ruby', 'download.rb'
)

Ruby의 프로세스 실행 인터페이스는 nil 값을 해당 자식의 환경에서 제거하는 것으로 취급합니다. Rake는 인자 목록을 그 인터페이스에 넘기므로 자신의 ENV는 그대로 유지됩니다.

실제 클라이언트와 관련된 키를 제거하세요. HTTPS 작업은 https_proxy도 사용할 수 있고, 일부 클라이언트는 ALL_PROXY나 다른 설정 파일을 참고합니다. HTTP 키 하나만 제거하는 것은 보편적인 직접 경로 지침이 아닙니다.

여러 인자 형태는 실행 파일의 인자를 분리해 유지합니다. 해제 명령과 URL이 들어간 셸 문자열을 만들 필요가 없습니다.

관련 글