내 컴퓨터에 ServiceMix를 설치했고 시작하려고 합니다. 시작 스크립트는 start.sh라고 합니다. 이렇게 하면 ./start.sh
"권한이 거부되었습니다"라는 메시지가 나타납니다. 그래서 나는 그것을 사용했고 sudo ./start.sh
서버가 정상적으로 시작되었습니다.
그런데 (여러 가지 이유로) Java 6을 사용하고 싶은데 Java 7을 사용하고 있는 것 같습니다. 나는 start.sh 스크립트를 보고 이 JAVA_HOME
변수를 사용한다는 것을 발견했습니다. 그래서 JAVA_HOME을 JDK 6 디렉터리로 설정했습니다.
그러나 ServiceMix는 여전히 Java 7을 사용합니다.
Google 검색에 따르면 sudo를 사용하여 명령을 실행할 때 sudo가 특정 환경 변수를 제거하는 것으로 나타났습니다. 그래서 나는 그랬다 sudo -E ./start.sh
. JDK 7을 다시 사용합니다.
start.sh를 열고 echo $JAVA_HOME
변수가 올바르게 설정되었는지 확인하기 위해 한 줄을 추가했습니다. 출력은 echo
빈 줄입니다.
. Defaults env_keep += "JAVA_HOME"
이제 start.sh를 실행하면 내 echo 문이 다시 빈 줄로 표시됩니다. ServiceMix는 여전히 JDK 7을 사용합니다.
지금 start.sh를 실행 하려고 하면 /etc/profile
echo 문이 다시 빈 줄로 표시됩니다. 마찬가지로 ServiceMix는 JDK 7을 사용합니다.
내가 여기서 무슨 실수를 했나요?
FWIW, 저는 Mac OS X 10.8.2를 사용하고 있습니다. echo $SHELL
내 터미널의 /bin/bash로 돌아갑니다. 사용 sudo su
하고 실행 하면 echo $SHELL
/bin/sh가 반환됩니다.
답변1
다음 단계를 시도해 보시기 바랍니다.
/etc/profile.d
디렉터리 내에서set_java_path.sh
다음 줄을 포함하는 file이라는 파일을 만듭니다.export JAVA_HOME=<_complete_path_to_java6_directory_>
bash
위의 변경 사항을 로드하려면 명령을 한 번 실행하세요 . 그리고start.sh
스크립트를 실행하세요.
편집하다:
디렉터리가 존재하지 않으면 동일한 이름(권한: 0755 및 소유자 및 그룹 루트)으로 디렉터리를 만들고 /etc/profile.d
파일에 /etc/profile
다음 코드를 추가합니다 .
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
답변2
환경변수를 sudoer로 유지하려면 Defaults env_keep += PATH
sudoer 파일( sudo visudo
)에 추가하세요.