내 Linux 시스템에 Java 1.6이 설치되어 있고 모든 사용자와 프로그램이 이를 사용합니다. 이제 버전 1.7을 사용하는 프로그램을 설치해야 합니다. 다른 사람들이 새 프로그램을 제외하고 1.6을 계속 사용할 수 있도록 이 버전을 설치하고 싶습니다. 내 생각은 새로운 Java를 설치하고 $JAVA_HOME이 이전 Java 1.6을 가리키도록 유지하는 것입니다. 별도의 사용자가 실행하는 특정 프로세스의 경우 $JAVA_HOME이 Java 1.7을 가리키도록 설정하고 싶습니다.
이것이 작동할까요? 원본 $JAVA_HOME을 덮어쓰지 않습니까? $JAVA_HOME이 모든 것이 작동할 만큼 새로운 Java를 가리키고 있나요?
참고: 프로그램이 Java 1.7에서 실행되는 것을 원하지 않습니다. 프로그램은 1.7에서 실행되어야 하는 스크립트를 호출합니다. 프로그램이나 스크립트를 수정할 권한이 없습니다.
답변1
$JAVA_HOME에 대해서만 걱정할 필요가 없습니다. 명령을 호출하려면 $PATH도 설정해야 합니다.아니요절대 경로. 예 java
, 아니오 /opt/java/1.7/bin/java
.
이제 스크립트 작동 방식이나 Java 호출 방식에 따라 몇 가지 옵션이 있습니다.
배쉬 스크립트
이렇게 하면 추가 사용자를 추가할 필요가 없습니다.
#!/bin/bash
JAVA_HOME=/opt/java/1.7
PATH=/opt/java/1.7/bin:$PATH
...
~/.bashrc
다른 사용자를 사용하려면 .bashrc에 넣을 수 있습니다. 내보내기를 사용하여 $JAVA_HOME 및 $PATH를 환경 변수로 설정합니다.
...
export JAVA_HOME=/opt/java/1.7
export PATH=/opt/java/1.7/bin:$PATH
...
평가하다
개별 명령 및 해당 하위 명령에 대해 이러한 환경 변수를 동적으로 설정할 수도 있습니다.
eval JAVA_HOME=/opt/java/1.7 PATH=/opt/java/1.7/bin:$PATH java ${ARGS}