Tomcat - setenv.shはどのように機能しますか?

Tomcat - setenv.shはどのように機能しますか?

私の質問は以前に要求されたことがないようです(とにかく完全に本当ではない場合は申し訳ありません)。 CentOS 7でTomcat 7を使用しています。

私はtomcat/bin/setenv.shファイルで次のように設定しました。

export TEST="test"

その後、端末を介してtomcat/bin/startup.shを実行してtomcatを起動しました。

その後、スクリプトを実行せずにTomcat起動スクリプトを実行し、端末で実行します。

echo $TEST

私の質問:変数TESTを「エコー」できるはずですか? TEST変数が私が望む値に設定(テスト)されていることを見ることができるはずですか?

ベストアンサー1

いいえ。startup.sh起動したプロセスとは異なるプロセスで実行されます。具体的には、シェルスクリプトが起動すると、新しく作成されたスクリプトで実行されます。サブシェル現在、シェルのサブシェル(および他のすべてのプロセス)は初期化中に親プロセスの環境を継承しますが、それ以降は変更はどの方向にも伝播されません。したがって、1がstartup.sh発生すると、環境の変更はコマンドラインに表示されません。. setenv.sh

考えてみると、物事が別の方向に進むことを本当に望んでいません。作業中のシェルは、いったんコントロールを取り戻すと、どのような環境変化が起こるのかを知っている人によって「汚染」されます。たとえば、Tomcatスクリプトは$PATHプロセス内の多くを完全に変更および中止できます。

1は実際にstartup.sh呼び出してcatalina.shからソースを取得しますsetenv.sh(少なくともTomcat 7.xでは)。ただし、単純化のために結果は変更されないため、これを無視します。

おすすめ記事