2016-12-29 19 views
1

私はJavaでアプリケーションを作成していますが、AWS EC2マシン(Linux)で環境変数を使用する必要があります。アプリケーションでSystem.getenv("myvariable")を使用して、特定の環境変数を取得しています。私は永続的な環境変数を設定する必要があり、現在は~/.bashrc~/.profile、さらに~/.bash_profileという変数を設定しています。 私はアル中で3つのファイルをexport myvariable=xyzを与えているし、私はsource ~/.bashrcsource ~/.profilesource ~/.bash_profileを走りました。しかし、私はアプリケーションでnullになっています。私は~/.bash_profile .Iで変数をエクスポートしていていてもいずれかの環境変数を取得することはできませんよ、なぜ私はまだ理解していないAWS EC2 Linuxで環境変数を追加する方法

でもecho $myvariableを実行することによって確認されていると私はXYZを見ることができます。

上記の設定と同じ方法でローカルMACマシンに同じ環境変数を設定し、同じシェルを使用して同じJavaコードを実行すると、変数に値が表示されます。

基本的に私はAWS EC2 Linuxマシンで毎回nullになっています。

変数を設定する必要がある他の場所はありますか?私もマシンを再起動しましたが、それは助けになりませんでした。

+2

。どのようにJavaアプリケーションを実行しますか? –

+0

私はmavenアプリケーションを実行するためにspring-bootを使用しています。そこで私はこのコマンドを発行します。sudo ./mvnw spring-boot:アプリケーションを実行するために実行します。 –

+2

デフォルトでは、 'sudo'は環境変数を保存しないので、' sudo'を使ってアプリケーションを実行しているときに、必要な環境変数はすべてアプリケーションで利用できなくなります。なぜあなたのサービスを 'sudo'として実行する必要があるのか​​?ポート特権? – birryree

答えて

3

env変数をどのように設定するのが問題なのですか? Sudoはデフォルトでそれらを保存しないので、sudo -Eオプションを使用する必要があります。

これは、より詳細に説明されています。それは同じ環境変数を取得していないので、Javaアプリケーションが同じユーザーとして実行されていないようですねHow to keep Environment Variables when Using SUDO

関連する問題