env 명령을 사용하여 JAVA_HOME 임시 값을 변경하는 방법

env 명령을 사용하여 JAVA_HOME 임시 값을 변경하는 방법

나는 작업에 openjdk를 사용하지만 때로는 oracle의 JRE가 필요할 때가 있습니다. 나는 이것을 달성하기 위해 "env" 명령을 사용할 수 있다고 생각했지만 왜 그것이 작동하지 않는지 알 수 없습니다. 실행하면 openjdk /usr/lib/jvm/java-1.8.0-openjdk-amd64와 oracle jdk가 있습니다. 다음을 얻습니다./usr/lib/jvm/jdk-8-oracle-x64env JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64 java -version

java version "1.7.0_75" OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-3) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

하지만 시도해 보면 env JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64 env|grep JAVA 다음과 같습니다.

JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-x64

나는 이것이 프로세스 분기 및 상속과 어느 정도 관련이 있다고 "느끼고" 있습니다. 나는 단순히 내보내기 이름=변수 명령 등을 사용할 수 있다는 것을 알고 있습니다. 그러나 "env" 명령을 사용하는 경우와 사용 방법에 대한 설명을 부탁드립니다. 감사합니다! (나는 데비안 리눅스, 불안정한 저장소를 사용하고 있습니다)

답변1

env 명령을 사용하여 이 작업을 수행할 수 있지만 몇 가지 해결 방법을 사용하여 를 호출해야 합니다. sh다음 코드 조각을 참조하세요.

# env var=bla echo $var
>
# env var=bla sh -c 'echo $var'
> bla
# echo $var
>

다음을 사용하여 더 많은 정보를 찾을 수 있습니다.info coreutils 'env invocation'

불행하게도 이것이 왜 sh -c ''.

env다소 직관적이지 않은 행동을 보이는 것 같습니다 ...

# env PATH= echo $PATH
> env: echo: No such file or directory
# env PATH= /bin/echo $PATH
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

관련 정보