시스템 디렉토리에 링크에 대한 링크가 있는 이유는 무엇입니까?

시스템 디렉토리에 링크에 대한 링크가 있는 이유는 무엇입니까?

예를 들어,

실행 가능 파일 emacs:

lrwxrwxrwx 1 root root      23 Jun  9  2012 /usr/bin/emacs -> /etc/alternatives/emacs
llrwxrwxrwx 1 root root     18 Jun  9  2012 /etc/alternatives/emacs -> /usr/bin/emacs23-x
lrwxrwxrwx 1 root root       9 May 16  2013 /usr/bin/emacs23 -> emacs23-x
-rwxr-xr-x 1 root root 6772008 May 16  2013 /usr/bin/emacs23-x

실행 가능 파일 emacsclient:

lrwxrwxrwx 1 root root      29 Jun  9  2012 /usr/bin/emacsclient -> /etc/alternatives/emacsclient
lrwxrwxrwx 1 root root      28 Jun  9  2012 /etc/alternatives/emacsclient -> /usr/bin/emacsclient.emacs23
-rwxr-xr-x 1 root root   18256 May 16  2013 /usr/bin/emacsclient.emacs23
  1. 시스템 디렉토리에 링크에 대한 링크가 있는 이유는 무엇입니까?

    어떤 이유로 연결해야 하는 경우, 예에서 두 파일을 직접 연결하는 대신 파일 입력에서 /usr/bin파일 입력으로 연결하고 다시 파일 입력으로 연결하는 이유는 무엇입니까 ?/etc/alternatives//usr/bin/usr/bin

  2. 링크되지 않은 파일에 도달할 때까지 링크를 지연시키는 명령이 있습니까?

우분투

답변1

  1. 시스템 디렉토리에 링크에 대한 링크가 있는 이유는 무엇입니까?

이는 사용할 기본 프로그램이나 프로그램 버전을 선택할 수 있는 유연한 방법을 제공합니다. 에서 man update-alternative:

데비안의 대체 시스템은 이 문제를 해결하는 것을 목표로 합니다. 파일 시스템의 공통 이름은 상호 교환 가능한 기능을 제공하는 모든 파일에서 공유됩니다. 대체 시스템과 시스템 관리자는 공통 이름이 참조하는 실제 파일이 무엇인지 공동으로 결정합니다. 예를 들어, 텍스트 편집기 ed(1)와 nvi(1)가 모두 시스템에 설치된 경우 대체 시스템에서는 일반 이름 /usr/bin/editor가 /usr/bin/nvi로 기본값이 설정됩니다. 시스템 관리자는 이 설정을 무시하고 /usr/bin/ed를 참조하도록 만들 수 있으며, 대체 시스템은 명시적으로 요청하지 않는 한 이 설정을 변경하지 않습니다.


2. 링크되지 않은 파일에 도달할 때까지 링크를 지연시키는 명령이 있습니까?

실용성이 있다면 readlink다음을 수행할 수 있습니다.

readlink -f link

예:

$ readlink -f /usr/bin/nawk
/usr/bin/gawk

abs_path또는 핵심 모듈에서 Perl 기능을 사용할 수 있습니다 Cwd.

$ perl -MCwd=abs_path -le 'print abs_path(shift)' /usr/bin/nawk 
/usr/bin/gawk

노트

답변2

이것은 시스템의 일부입니다 alternatives. 이를 통해 관리자는 시스템의 기본 설정과 동일한(또는 유사한) 작업을 수행하는 다양한 유틸리티를 구성할 수 있습니다.

예에는 시스템의 기본 Java 버전(OpenJDK 또는 Oracle 제품) 구성이 포함됩니다.

다음을 사용하여 시스템에 대안을 나열할 수 있습니다.

alternatives -l

/etc/alternatives이 명령으로 나열된 모든 항목은 기호 링크로 도 존재한다는 것을 알 수 있습니다 .

namei유틸리티는 다음 기호 링크에 유용합니다.

$ namei /usr/bin/cdrecord
f: /usr/bin/cdrecord
 d /
 d usr
 d bin
 l cdrecord -> /etc/alternatives/cdrecord
   d /
   d etc
   d alternatives
   l cdrecord -> /usr/bin/wodim
     d /
     d usr
     d bin
     - wodim

관련 정보