set-proxy.sh를 실행해도 터미널이 바뀌지 않는 이유
실행된 스크립트는 변수를 부모 셸로 다시 내보낼 수 없습니다. 현재 셸이 설정을 유지해야 한다면 신뢰할 수 있는 구성 파일을 source 하세요.
스크립트에는 올바른 export https_proxy=... 줄이 있습니다. 실행해도 다음 명령은 여전히 예전 proxy를 봅니다. 스크립트 자체는 자신의 프로세스 안에서 완벽하게 동작했을 수 있습니다.
스크립트 실행은 별도의 셸을 시작합니다. 그 셸은 자기가 시작한 명령에 변수를 넘길 수 있지만, 종료된 뒤 부모 터미널 셸의 환경을 바꿀 수는 없습니다.
./set-proxy.sh
. ./set-proxy.sh
서로 다른 작업입니다. 두 번째는 셸의 dot 빌트인으로 현재 셸에서 파일을 읽습니다. Bash는 이것을 source라고도 부릅니다. 빌트인 참조를 보세요.
신뢰하는 파일만 source 하세요. 그 안의 모든 셸 명령이 바로 그 현재 문맥에서 실행되기 때문입니다. proxy가 스크립트 안의 명령에만 필요하다면 일반 실행이 올바른 경계입니다. 단일 외부 명령에는 명령 범위 proxy 지정을 쓰면 현재 셸을 바꾸지 않습니다.
변수 지정은 그대로 두세요. 백틱은 인용이 아니라 명령 치환을 뜻합니다. proxy를 지정하는 줄이 실수로 그 URL을 실행하려 해서는 안 됩니다. 공개 엔드포인트를 고르기 위한 값에는 무료 proxy 목록이 프로토콜이 클라이언트와 맞아야 하는 후보를 제공합니다. 마지막으로 실제 네트워크 클라이언트가 읽는 변수 이름을 확인하세요. 셸 범위를 고쳐도 지원되지 않는 변수가 유효해지지는 않습니다.