쉘 스크립트에서 프록시 환경 변수 설정

쉘 스크립트에서 프록시 환경 변수 설정

프록시를 차례로 설정하려고 하는데 export명령이 작동하지 않습니다. CentOS 7을 사용하고 있습니다.

나는 기본으로 돌아가서 환경 변수를 설정 및 설정 해제한 다음 테스트하는 매우 간단한 bash 스크립트를 테스트했습니다. 환경 변수가 올바르게 설정된 것 같지만 외부 IP가 여전히 로컬 IP로 표시됩니다.

$1형식의 주소입니다.http://119.27.177.169:80

#!/bin/bash

function set() {
    export http_proxy="$1/"    # not working
    export https_proxy="$1/"   # not working
    testExtIP
}

function unset() {
    unset http_proxy
    unset https_proxy
    testExtIP
}

function testExtIP() {
    externalHTTP=$(curl -s http://api.ipify.org) # an API that echos the external IP quickly
    externalHTTPS=$(curl -s https://api.ipify.org)
    echo "External HTTP: $externalHTTP; external HTTPS: $externalHTTPS" 
}

case "$1" in
    'set')
    set $2 # speed
    ;;
    'unset')
    unset $2
    ;;
    'test')
    testExtIP $2
    ;;
    *)
    echo "Usage: $0 $versum [set|unset|test]"
    ;;
esac

스크립트가 다음을 반환하길 원합니다:

External HTTP: 119.27.177.169; external HTTPS: 119.27.177.169

하지만 내 외부 IP가 설정되지 않았습니다.

External HTTP: **SERVERIP**; external HTTPS: **SERVERIP**

다양한 도구를 사용해 테스트해봤습니다. 내보내기 명령이 작동하지 않는 이유는 무엇입니까? 제가 뭔가 중요한 것을 놓쳤나요?

답변1

당신은 이것을 할 수 없습니다. 스크립트에는 스크립트 자체에만 적용되고 스크립트가 끝나자마자 사라지는 고유한 변수 세트(또는 원하는 경우 환경)가 있습니다. 따라서 스크립트의 상위인 쉘(쉘 내에서 스크립트를 실행하고 있기 때문에)은 스크립트의 환경 및 설정 변수에 대해 알지 못합니다.

관련 정보