우분투에서 $ JAVA_HOME을 쉽게 변경 가능하게 [닫기]


139

우분투에서는 Java 5와 6 사이에서 JAVA_HOME 환경 변수를 앞뒤로 전환하고 싶습니다.

터미널을 열고 다음을 입력하여 JAVA_HOME 환경 변수를 설정하십시오.

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

그리고 같은 터미널 창에서 다음을 입력하여 환경 변수가 업데이트되었는지 확인합니다.

echo $JAVA_HOME

그리고 나는 /usr/lib/jvm/java-1.5.0-sun 을 보게 될 것입니다. 또한 ~ / .profile을 수정하고 JAVA_HOME 환경 변수를 /usr/lib/jvm/java-1.5.0-sun으로 설정했습니다.

그리고 이제 문제가 생겼습니다. 새 터미널 창을 열고 echo $ JAVA_HOME 을 입력하여 JAVA_HOME 환경 변수를 확인하면 JAVA_HOME 환경 변수가 Java 6으로 되돌아갔습니다. JAVA_HOME 환경 변수가 Java 5로 설정되어 있다고 가정합니다 (아마도 ~ / .profile에서 수정했기 때문에).

내가 로그 아웃하지 않고 다시 내 JAVA_HOME 환경을 변경 (및 그 환경 변수 변화 할 수 있다는 것을이 때문에 주위에 방법이 있나요 스틱을 모든 새 터미널 창에서)는?


29
올바른 사이트와 중복 답변은 무엇입니까?
Martin Konicek

~/.profile우분투에 로그인 할 때 파일은 사용자가 로그 아웃 / 로그인 후 JAVA_HOME 모든 터미널과 당신이 실행되는 다른 응용 프로그램에 설정되어 그렇다면 읽습니다. JAVA_HOME을 설정 ~/.bashrc하면 터미널에서 실행되는 응용 프로그램에서만 볼 수 있습니다.
jr0cket

답변:


196

환경 변수를 전역 /etc/environment파일에 넣으십시오 .

...
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
...

변수를 업데이트하려는 모든 쉘에서 "source / etc / environment"를 실행하십시오.

$ source /etc/environment

작동하는지 확인하십시오.

$ echo $JAVA_HOME
$ /usr/lib/jvm/java-1.5.0-sun

로그 아웃이 필요하지 않습니다.

터미널에서만 JAVA_HOME 환경 변수를 설정하려면 ~ / .bashrc 파일 에서 설정 하십시오.


9
이러한 변경 사항이 Ubuntu UI를 통해 시작된 앱에 영향을 미치려면 다시 시작해야합니다 (예 : 앱을 두 번 클릭)
Eric Hu

7
이것은 모든 friggin 'shell에서 변수를 설정하는 것과 어떻게 다릅니 까?
mlissner

1
매번 이것을 수동으로 실행할 필요가없는 다른 방법은 "source / etc / environment"
nityan

1
@MartinKonicek 귀하의 예가 잘못되었습니다. 해당 라인에 '내보내기'가 없어야합니다. / etc / environment는 키
pdeva

1
명심 /etc/environment특별한 예를 들어, 변수 대체를 허용하지 않습니다 JRE_HOME=${JAVA_HOME}/jre작동하지 않습니다.
Abdull

31

이것은 아마도 문제를 해결할 것입니다 : https://help.ubuntu.com/community/EnvironmentVariables

세션 전체 환경 변수

특정 사용자 환경에 영향을주는 방식으로 환경 변수를 설정하려면 사용자의 홈 디렉토리에있는 특정 쉘 스크립트 파일에 값을 설정하는 명령을 배치하지 말고 다음을 사용해야합니다.

~ / .pam_environment-이 파일은 특별히 사용자 환경을 설정하기위한 것입니다. 스크립트 파일은 아니지만 한 줄에 하나씩 할당 표현식으로 구성됩니다.

권장하지 않음 :

~ / .profile-환경 변수 지정을 배치하기에 가장 적합한 파일 일 것입니다. 시작 프로세스 데스크탑 세션 중에 DisplayManager와 텍스트 콘솔에서 로그인 할 때 로그인 쉘에 의해 자동으로 실행되기 때문입니다.


제공 한 링크에서 : "아래는 권장되지 않지만이 페이지에 제공된 이전 솔루션 (?)은 10.04 데스크탑 릴리스에서 작동하지 않았습니다. .pam_environment는 배포와 함께 자연스럽게 처리되지 않습니다."
Calmarius

14
~ / .pam_environment는 변수를 처리한다고 가정 할 경우 로그인을 차단하는 가장 좋은 방법입니다. PATH를 $ {PATH} : $ {HOME} / bin으로 설정하려고 시도했지만 변수를 평가하지 못했습니다. 최종 결과 : 로그인 할 수 없음 : (Ctrl-Alt-1을 방문하여 "/ bin / rm ~ / .pam_environment"를 실행하여 수정되었습니다. 매우 신중하거나 보조 계정을 사용하여 설정을 테스트하십시오.
Alain O'Dea

6
개인적으로 왜 그들이 환경 파일을 생성하는 것을 귀찮게하고 이전에 작동 한 환경 변수를 설정하는 다른 메커니즘과 완전히 다른 방식으로 작동했는지 알 수 없습니다. 환경 파일과 같은 간단한 키 값 쌍은 일반 BS입니다. 환경에서 변수와 링크를 사용하는 이유가 있으며 오늘날에도 장점이 있습니다. 관리를 단순화합니다. Bozos가 누구든지이 파일에서 PAM 방식이 최선이라고 결정한 사람은 최고입니다. 해석 할 변수가 필요합니다.
Bill Rosmus

1
@ AlainO'Dea : 나는 정확히 같은 문제가있었습니다. 로그인 화면을 지나갈 수 없을 때 충격을 받았습니다. 약간의 파고 후에 변수를 사용할 수는 있지만 다른 구문을 사용해야한다는 것을 알았습니다. 예. PATH DEFAULT = $ {PATH} : $ {HOME} / bin 변수를 사용하지 않으면 간단한 할당이 작동하는 것 같습니다.
tim_wonil

예, @ AlainO'Dea에 동의합니다. 스크립트에 오류가 있으면 로그인 할 수 없습니다. 조심해
Evan Hu

13

다음 단계를 시도하십시오.

- "etc \ profile"을 편집 할 것입니다. 환경 변수는 파일 맨 아래에 입력해야합니다. 우분투는 루트 폴더에 대한 액세스 권한을 부여하지 않으므로 터미널에서 몇 가지 명령을 사용해야합니다

1 단계 : 터미널을 시작합니다. 명령을 입력하십시오 :gksudo gedit /etc/profile

2 단계 : 프로필 텍스트 파일이 열립니다. 페이지 하단에 환경 변수를 입력하십시오 ......... . export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH

3 단계 : 파일을 저장하고 닫습니다. 환경 변수가 echo 명령을 사용하여 설정되어 있는지 확인 ........ 예를 echo $PATH


9

변수 정의를 ~/.bashrc파일 합니다.

bash 맨 페이지에서 :

로그인 쉘이 아닌 대화식 쉘이 시작되면 bash는 /etc/bash.bashrc 및 ~ / .bashrc (있는 경우)에서 명령을 읽고 실행합니다.


5

일반적으로 터미널 창에서 변수 만 변경하려면 .bashrc새 터미널을 열 때마다 소스 파일로 변수를 설정하십시오 . .profile새 터미널을 열 때마다 파일이 제공되지 않습니다.

문제의 .profile과 .bashrc의 차이점을 참조하십시오. .bashrc, .bash_profile 및 .environment의 차이점은 무엇입니까?

.bashrc문제를 해결해야합니다. 그러나 우분투를 사용하고 있기 때문에 올바른 해결책이 아닙니다. 관련 Ubuntu 도움말 페이지 " 세션 전체 환경 변수 "를 참조하십시오. 따라서 그것이 효과 .profile가 없는 것은 놀라운 일 이 아닙니다. 우분투 12.04와 xfce를 사용합니다. 내가 설정했는데 .profile로그 아웃하고 로그인해도 효과가 없습니다. 비슷한 경험이 있습니다 . 당신은 사용 할 수 있습니다 그래서 .pam_environment파일을 완전히 잊어 .profile하고 .bashrc. 그리고 그것은 .pam_environment스크립트 파일이 아닙니다.




1

.profile을 변경 한 후 변경 사항을 적용하려면 파일을 실행해야합니다.

root@masternode# . ~/.profile

이 작업이 완료되면 echo 명령이 작동합니다.


~/.profile대신 사용해야합니다 ./.profile.
Alexis Wilke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.