プロキシを順番に設定しようとしていますが、コマンドは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
これはできません。スクリプトには、スクリプト自体にのみ適用され、スクリプトが終了するとすぐに消える一意の変数セット(または必要に応じて環境)があります。したがって、スクリプトの親であるシェル(シェル内でスクリプトを実行しているため)は、スクリプトの環境変数と設定変数を知りません。