web-dev-qa-db-ja.com

Bashスクリプト-ローカル環境変数の設定(プロキシ)

2スクリプトを作成しようとしています。 1つはローカル環境変数の設定用、もう1つはローカル環境変数の設定解除用です。

まず、両方のスクリプトが次のコマンドで作成されました。

touch set-proxy.shtouch unset-proxy.sh

次に、両方を実行可能にしました。

chmod 700 set-proxy.shchmod 700 unset-proxy.sh

次に、set-proxy.shファイルに移動して、次のコードを入れました。

#!/bin/bash

`export HTTP_PROXY=http://nick:nick@proxy.***.***.com:****`
`export HTTPS_PROXY=http://nick:nick@proxy.***.***.com:****`
`export HTTP-PROXY=http://nick:nick@proxy.***.***.com:****`
`export HTTPS-PROXY=http://nick:nick@proxy.***.***.com:****`
`export http_proxy=http://nick:nick@proxy.***.***.com:****`
`export https_proxy=http://nick:nick@proxy.***.***.com:****`
`export http-proxy=http://nick:nick@proxy.***.***.com:****`
`export https-proxy=http://nick:nick@proxy.***.***.com:****`

次に、unset-proxy.shファイルに移動して、次のコードを挿入しました。

#!/bin/bash

`unset HTTP_PROXY`
`unset HTTPS_PROXY`
`unset HTTP-PROXY`
`unset HTTPS-PROXY`
`unset http_proxy`
`unset https_proxy`
`unset http-proxy`
`unset https-proxy`

すべてのプロキシ構成を設定解除および設定する簡単な方法がほとんど必要です。 2つのスクリプトを作成するのが最も簡単な方法だと思いました。

ただし、./unset-proxy.shまたは./set-proxy.shを実行すると、次のエラーメッセージが表示されます。

./unset-proxy: line 5: unset: `HTTP-PROXY': not a valid identifier
./unset-proxy: line 6: unset: `HTTPS-PROXY': not a valid identifier
./unset-proxy: line 9: unset: `http-proxy': not a valid identifier
./unset-proxy: line 10: unset: `https-proxy': not a valid identifier

(それから私はset-proxy.shでも同じようになっています)。

誰かが私が間違っていることと私がそれをどのように修正できるかについて正しい方向に私を指摘するのを助けることができれば、とても感謝しています。ありがとう。

1
user257636

ここにいくつかの間違いがあるようです。まず、変数割り当て式をバッククォートの中に入れないでください。バッククォートは コマンド置換 の(多少古い)構文です。あなたが探していたのは single-quotes だったと思います。 変数の引用 は、文字列リテラルを保持し、 パラメータ置換 を防ぐために行われます。

また、変数名にハイフン文字を使用することはできません。 Bashマニュアル、第2章:定義 からの抜粋を以下に示します。

名前

文字、数字、およびアンダースコアのみで構成され、文字またはアンダースコアで始まる単語。名前は、シェル変数および関数名として使用されます。 識別子とも呼ばれます。

詳細については、次の投稿も参照してください。

バッククォートとハイフンを削除した後のスクリプトは次のようになります。

#!/bin/bash
# set_proxy.sh

export HTTP_PROXY='http://nick:nick@proxy.***.***.com:****'
export HTTPS_PROXY='http://nick:nick@proxy.***.***.com:****'
export http_proxy='http://nick:nick@proxy.***.***.com:****'
export https_proxy='http://nick:nick@proxy.***.***.com:****'

そして:

#!/bin/bash
# unset_proxy.sh

unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy

最後に、スクリプトを実行すると、スクリプトがサブシェルで実行されるため、環境変数がアクティブなシェルセッションに影響を与えることはありません。たとえば、次の投稿を参照してください。

簡単に言えば、それは不可能です。したがって、スクリプトで現在のシェル環境を変更したい場合は、それらを「ソース」する必要があります。例:

source set_proxy.sh

source unset_proxy.sh
6
igal