답변:
어느 두 명령?
/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
다른 파일을 삭제 하듯이 링크를 삭제하는 데 사용 하십시오.
주어진 이름의 모든 구성 요소에있는 모든 심볼릭 링크를 재귀 적으로 따라 가면서 경로를 정식화합니다. 마지막 구성 요소를 제외한 모든 구성 요소가 존재해야합니다.
bash (1)과 동일한 알고리즘을 사용하여 환경 변수 PATH에 나열된 디렉토리의 실행 파일 또는 스크립트
which
찾은 것이 심볼릭 링크인지 아닌지는 신경 쓰지 않습니다. 단지 실행 가능하다는 것입니다. 인쇄되는 경로가 항상의 디렉토리 중 하나에 있도록 보장합니다 PATH
.
시스템에서 /usr/bin/java
A는 심볼릭 링크 에 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
. 이와 같이 두 명령을 결합하면 출력 을 다음 명령 줄로 대체 하여 작성합니다.which
readlink -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
다루어야 할 이유가 없으며 시스템의 일반적인 라이브러리 배열에 참여하지 않는 다른 파일이 많이 있습니다 .