0

のような場所に Korn シェル スクリプトがあります/opt/apps/abc/folder/properties.env。ドット コマンドを使用して Unix bash から実行できます。

. /opt/apps/abc/folder/properties.env

これは機能します。

abc.plscriptを呼び出すPerl スクリプトがありますproperties.env。私は次の異なることを試しました:

  1. system('/usr/bin/ksh','-c', '. /opt/apps/abc/folder/properties.env');

  2. /usr/bin/ksh -c /opt/apps/abc/folder/properties.env;

  3. system('. /opt/apps/abc/folder/properties.env');

上記のいずれも機能しません。execPerlスクリプトに戻したいので使いたくない。私は何を間違っていますか?

4

2 に答える 2

3

環境の変更は、コマンドによって生成された ksh セッションが存続している間だけ持続しsystem ます。環境の変更を Perl スクリプトに反映させたい場合は、Perl プログラムを起動する前にそのファイルをソースする必要があります。

于 2012-04-10T10:32:56.363 に答える
0

(perl を呼び出した環境ではなく) perl コードでこれらの環境変数が必要な場合は、その properties.env を読み取って解析し、%ENV 変数で環境を設定することもできます。

例えば

$ENV{'ENV_VAR1'}=VALUE_OF_ENV_VAR1

他のポスターが言ったように、 system() を使用すると別のプロセスが生成されます。子供の環境が変わっても、親には影響しません。

于 2012-04-10T20:42:10.147 に答える