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