proxy-on.sh を実行しても親シェルは再設定されない
プロキシヘルパーで現在のシェルの環境を変える場合は、シェル関数か source したファイルを選びます。
スクリプトは http_proxy をエクスポートし、「enabled」と表示して終了します。その後、元のターミナルから起動した Curl は依然として古い環境のままです。
スクリプトの実行は子プロセスを作りました。export はそのプロセスの子に値を渡すだけで、親シェルに値を戻すことはありません。export を bash -c やバッククォートの中に置いても、この関係は逆転しません。
対話的な切り替えには、現在のシェルで定義した関数が目的の処理を行えます。
proxy_on() {
export http_proxy=http://proxy.example.net:8080
export https_proxy="$http_proxy"
}
例のエンドポイントは、ご自身の HTTP サービス、または許可された公開リクエスト用の HTTP プロキシ一覧 の候補に置き換えてください。定義を読み込んだ後にその関数を呼び出します。source したシェルファイル は、新しいシェルではなく現在のシェルで代入を実行するもう一つの方法です。
既存の GUI アプリケーションや他のターミナルは、それぞれ独自の環境を保持したままです。ヘルパーがプロキシ経由のコマンドを 1 つだけ起動するためのものなら、変更をそのコマンドの環境に閉じ込めるのがたいてい正しい範囲です。