システムディレクトリにリンクへのリンクがあるのはなぜですか?

システムディレクトリにリンクへのリンクがあるのはなぜですか?

例えば、

実行可能ファイル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. システムディレクトリにリンクへのリンクがあるのはなぜですか?

    何らかの理由でリンクする必要がある場合、例では2つのファイルを直接リンクするのではなく、ファイル入力からファイル入力にリンクし、ファイル入力に戻すの/usr/binはなぜですか?/etc/alternatives//usr/bin/usr/bin

  2. リンクされていないファイルに到達するまでリンクを遅らせるコマンドはありますか?

Ubuntu

ベストアンサー1

  1. システムディレクトリにリンクへのリンクがあるのはなぜですか?

これは、使用する基本プログラムまたはプログラムのバージョンを選択するための柔軟な方法を提供します。からman update-alternative

Debian の代替システムは、この問題を解決することを目指しています。ファイルシステムの共通名は、交換可能な機能を提供するすべてのファイルで共有されます。代替システムとシステム管理者は、共通名が参照する実際のファイルが何であるかを共同で決定します。たとえば、テキストエディタ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

ノート

おすすめ記事