動作しないものについては、ls -l結果を見ると、次のものが得られます:
[sparticvs@sparta test]$ ls -l build/
total 0
lrwxrwxrwx. 1 sparticvs sparticvs 6 Dec 17 16:08 client -> client
ここで何が起こっているかを理解するために。呼び出したコマンドを見てみましょう。
ln -s client build/client
マニュアルページによると、この形式には2つの一致が考えられます
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
最初のフォームで一致します(最初のフォームから)。これで、「ターゲット名」またはclient場合によっては、(完全なlnマニュアルによれば)任意の文字列にすることができます。今すぐ解決する必要はありませんが、将来は解決できます。呼び出しで作成しているのは「ダングリングシンボリックリンク」であり、システムはこれらの作成を妨げません。
これで、2番目の呼び出しln -s ../client build/clientは「相対シンボリックリンク」と呼ばれるものになります(自分の投稿で述べたように)。2番目のタイプがあり、これはを実行することで呼び出される「絶対シンボリックリンク」ln -s /home/user/client build/clientです。
これはバグではありません。マニュアルによると:
現在のディレクトリとは異なる場所に相対シンボリックリンクを作成する場合、シンボリックリンクの解像度は、現在のディレクトリの同じ文字列の解像度とは異なります。したがって、多くのユーザーは、最初にディレクトリを相対シンボリックリンクが作成される場所に変更し、タブ補完または他のファイル解決がシンボリックリンクに配置されるものと同じターゲットを見つけることを好みます。
-から info coreutils 'ln invocation'
それはあなたが、言ったしなければならないターゲットの相対パスまたは絶対パスのいずれかを使用します。