/ usr / bin / java의 Java 위치


20

Linux 시스템에서 내 Java 위치를 찾으려고 노력 중입니다.

[980@b449 ~]$ which java
/usr/bin/java


[980@b449 ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java

두 명령의 차이점은 무엇입니까?

답변:


21

어느 두 명령? /usr/bin/java에 대한 소프트 (기호) 링크 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
입니다. 동일한 파일이므로 차이가 없습니다.
당신이 같은 것을 입력하면

ls -l /usr/bin/java

다음과 같은 결과가 나타날 수 있습니다.

lrwxrwxrwx. 1 root root 22 Aug  5 17:01 /usr/bin/java -> /etc/alternatives/java

즉, 시스템에 여러 Java 버전이 있고 대체 버전을 사용하여 기본 버전을 변경할 수 있습니다. 그렇지 않으면 링크를 추가하고 제거하여 기본 링크를 수동으로 변경할 수 있습니다.

심볼릭 링크를 만들려면 다음 명령을 사용하십시오

ln -s /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java /usr/bin/java

또는 일반적인 형태

ln -s <original file> <link to file>

rm다른 파일을 삭제 하듯이 링크를 삭제하는 데 사용 하십시오.


5

readlink -f의지 :

주어진 이름의 모든 구성 요소에있는 모든 심볼릭 링크를 재귀 적으로 따라 가면서 경로를 정식화합니다. 마지막 구성 요소를 제외한 모든 구성 요소가 존재해야합니다.

which검색합니다 :

bash (1)과 동일한 알고리즘을 사용하여 환경 변수 PATH에 나열된 디렉토리의 실행 파일 또는 스크립트

which찾은 것이 심볼릭 링크인지 아닌지는 신경 쓰지 않습니다. 단지 실행 가능하다는 것입니다. 인쇄되는 경로가 항상의 디렉토리 중 하나에 있도록 보장합니다 PATH.

시스템에서 /usr/bin/javaA는 심볼릭 링크/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java. 이와 같이 두 명령을 결합하면 출력 을 다음 명령 줄로 대체 하여 작성합니다.whichreadlink -f

readlink -f /usr/bin/java

즉, which라는 첫 번째 실행 파일 java이에 있고 PATH, 쉘이 해당 경로를에 대한 인수로 삽입했습니다 readlink -f. readlink그런 다음 경로를 찾아서 해당 링크심볼릭 링크 임을 확인하여 해당 링크 (및 찾은 다른 링크)를 확인하여 실제 파일 자체에 대한 완전한 직접 경로를 생성합니다.

거의 모든 목적을 위해 이러한 경로는 사용자와 상호 교환 가능합니다. symlink java는 사용할 때 자동으로 실제 경로로 해석되며 파일 자체를 수정하는 것은 사용자가 아닌 패키지 관리자가 수행하므로 그것을 보는 것. 경로에서 또는 just로 프로그램을 실행할 수 java있으며 결과는 결국 실행되는 것과 동일한 실제 실행 파일이므로 정확히 동일합니다.

패키지 관리자는 실제 파일을 내부에 넣지 않고 심볼릭 링크를 사용합니다 /usr/bin. JRE에는 특이한 구성으로 나란히 원하는 전체 파일 세트가 있고 심볼릭 링크를 사용하면 패키지 관리자가 당신은 사용자로서. 그 안에는 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64다루어야 할 이유가 없으며 시스템의 일반적인 라이브러리 배열에 참여하지 않는 다른 파일이 많이 있습니다 .


0

이 한 줄 명령 :

which java | xargs readlink -f

당신을 위해 일을 할 것입니다.

  • which java 당신에게 즉 : /usr/bin/java
  • readlink -f모든 심볼릭 링크 /usr/bin/java-> /etc/alternatives/java-> 를 거쳐 /usr/lib/jvm/java-8-oracle/jre/bin/java마지막 링크를 반환합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.