0

私が会社にいるとき、3つの環境変数、http_proxy、https_proxy、all_proxyをエクスポートする必要があります。

~/bin/setproxy のようなファイルを書きました

#! /bin/sh
export http_proxy=http://......:8888
export https_proxy=http://......:8888
export all_proxy=http://......:8888

しかし、このファイルを bash で実行するときは、env | を使用します。grep http_proxy 、何も得られませんでした。しかし、「source ~/bin/setproxy」は機能しますが、これを 1 語のコマンドに短縮する方法はありますか。別のファイルを1行だけ書きましたが、

source ~/bin/setproxy

しかし、それは機能しません。

4

2 に答える 2

3

そのスクリプトを実行すると、サブシェルが生成され、そのシェルで 3 つのエクスポートが実行されます。スクリプトが終了すると、サブシェルが終了します。そのため、環境変数が設定されていません。

そのコードを関数、たとえば に入れ、.bashrcそれを呼び出すと、次のように機能します。

function setproxy {
    export http_proxy=http://......:8888
    export https_proxy=http://......:8888
    export all_proxy=http://......:8888
}
于 2010-10-18T08:35:18.287 に答える
2

あなたの問題は、次のいずれかを実行しているためだと思います。

~/bin/setproxy

また:

your_other_file_which_sources_setproxy

どちらの場合も、サブシェルで実行されます。つまり、呼び出し元のシェルではなく、エクスポートがそのサブシェルにあることを意味します。

次の短い形式を使用できますsource

. ~/bin/setproxy

またはエイリアスを作成します。

alias sp='source ~/bin/setproxy'

あなた.bashrcまたは他の起動スクリプトで。

後者のソリューションでは、次を実行できます。

sp

仕事をすること。

于 2010-10-18T08:36:49.847 に答える