パス文字列全体を入力せずに、絶対パスとして現在のディレクトリにリンクする最も簡単な方法は
ln -s "$(pwd)/foo" ~/bin/foo_link
コマンドのtarget
(最初の)引数ln -s
は、現在のディレクトリではなく、シンボリックリンクの場所に関連して機能します。基本的に、作成されたシンボリックリンク(2番目の引数)は、最初の引数に指定したテキストを単に保持していることを知るのに役立ちます。
したがって、次のことを行う場合:
cd some_directory
ln -s foo foo_link
その後、そのリンクを移動します
mv foo_link ../some_other_directory
ls -l ../some_other_directory
そこにあるディレクトリを指すようにfoo_link
試みることがわかりますfoo
。これは、相対パスを指すシンボリックリンクでも機能します。以下を行う場合:
ln -s ../foo yet_another_link
そして、yet_another_link
別のディレクトリに移動して、それが指す場所を確認すると、常にを指していることがわかります../foo
。多くの場合、シンボリックリンクはさまざまな絶対パスに存在できるディレクトリ構造の一部である可能性があるため、これは意図された動作です。
あなたの場合、次のように入力してリンクを作成するとき
ln -s foo ~/bin/foo_link
foo_link
foo
位置への相対リンクを保持しています。$(pwd)
ターゲット引数の名前の前に置くと、現在の作業ディレクトリの絶対パスが追加されるだけなので、リンクは絶対ターゲットで作成されます。