2016-12-29 8 views
1

Java로 애플리케이션을 작성 중이며 AWS EC2 시스템 (Linux)에서 환경 변수를 사용해야합니다. 응용 프로그램에서 System.getenv("myvariable")을 사용하여 특정 환경 변수를 가져옵니다. 영구 환경 변수를 설정해야하며 현재 변수를 ~/.bashrc, ~/.profile~/.bash_profile으로 설정했습니다. 나는 알에서 3 개 개의 파일을 export myvariable=xyz을 제공하고 다음 나는 source ~/.bashrc, source ~/.profilesource ~/.bash_profile을 달렸다. 그러나 응용 프로그램에서 null이 나타납니다. 심지어 echo $myvariable을 실행하여 검사 한 내가 ~/.bash_profile .I에서 변수를 수출하고있다하더라도 어떤 환경 변수를 얻을 수 없습니다입니다 이유AWS EC2 Linux 환경 변수를 추가하는 방법

는 아직도 이해가 안 나는 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 옵션을 사용해야합니다. 자바 응용 프로그램이 같은 환경 변수를 받고되지 않도록 동일한 사용자로 실행하지 않는 것처럼 How to keep Environment Variables when Using SUDO

관련 문제