2

Mac OSX と Linux CentOS では、.bashrc と .bash_profile を使用して、新しいシステム環境変数 (つまり "MYAPP") を挿入します。ラップトップ(Mac)とサーバー(Linux)も再起動しました。

コマンドライン「env」を使用すると、その環境変数は正しい値で表示されました。しかし、どういうわけか、MacまたはLinuxのJavaアプリ(デスクトップアプリ、Webアプリ、EJB、または他のJavaアプリのサーブレット)で取得しようとするたびに、その環境変数(「MYAPP」)が取得されません。

Java が取得できる環境変数全体を繰り返し処理しようとしたところ、「MYAPP」以外のすべての環境変数が取得されることがわかりました。これは非常に奇妙です。

誰でもこれを解決する方法を知っていますか?

4

4 に答える 4

1

しましたかexport MYAPP=...?変数をエクスポートすると、シェルで実行されているJavaなどの子プロセスで使用できるようになります。

于 2012-08-07T02:05:14.910 に答える
1

環境変数を定義してエクスポートした後。同じターミナルから IDE を起動します。

于 2013-12-31T19:36:43.223 に答える
1

Linux では、bash セッションでのみ変数を設定 (またはエクスポート) すると、一種の「サブ」セッションで使用できます。これは、実行したばかりのコマンドでのみ使用でき、他には何も使用できません。

おそらく、bash でドット演算子を使用できます(「source」コマンドとも呼ばれます)。ページから:

「ソース」を使用してスクリプトを実行すると、既存のシェル内で実行され、スクリプトによって作成または変更された変数は、スクリプトの完了後も引き続き使用できます。

だから、やってみることができます。export VARIABLE=value にしてから、Java プログラムを実行します。これは、Windows ターミナルで変数を設定し、新しいターミナルを開いて環境変数が存在することを期待するのと似ています。それはしません。

このようにして、bash に「このコマンドはこの特定のセッション (セッションのプロセス) で使用できるようにする必要があります」と伝えます。それ以外の場合は、「このエクスポート コマンドを実行した後に終了する bash セッションにこの環境変数を設定してください」と伝えているため、Java プログラムを実行しても存在しません。

于 2012-08-07T16:39:45.493 に答える