相対パス名を使用してソフトリンクを作成する方法はありますか? (基本パスに相対的または絶対パスではない)

相対パス名を使用してソフトリンクを作成する方法はありますか? (基本パスに相対的または絶対パスではない)

pwdを基準にしてみましたが、うまくいきません。

現在のパスワードは、宛先パスと元のパス(リンクを生成する必要があるパス)とは異なります。

ホームディレクトリがわからないため、ホームディレクトリに関連付けられているパス名は使用できません。絶対パス名は必要ありません。

相対パス名を使用してソフトリンクを作成するには?

ベストアンサー1

相対シンボリックリンクは親ディレクトリに相対的であり、プロセスの現在のディレクトリやユーザーのホームディレクトリとは関係ありません。

たとえば、行へ/some/dir/linkのシンボリックリンクの場合、現在またはホームディレクトリが何であるかに関係なく(それ自体がシンボリックリンクではない場合)への../foo/barシンボリックリンクです。/some/dir/../foo/bar/some/foo/bar/some/dir

bin/ls現在のディレクトリに関連付けられているファイル(現在のディレクトリ内のファイルなど/home/stephane)への新しいシンボリックリンクを作成するには、次のようにします(POSIXに似たシェルまたはからfish)。

ln -s -- "$PWD/bin/ls" /some/dir/link

これにより(への)絶対シンボリックリンクが生成されます/home/stephane/bin/ls。相対シンボリックリンクを作成するには、次のものが必要です。

ln -s ../../home/stephane/bin/ls /some/dir/link

(それ自体/some/some/dirシンボリックリンクではないと仮定)

GNUには、このパスを計算するのに役立つオプションがlnあります-r

ln -rs bin/ls /some/dir/link

(これを行うと同じシンボリックリンクが生成されます../../home/stephane/bin/ls)。

おすすめ記事