相対パス名を使用してソフト リンクを作成する方法はありますか? (ホームからの相対パスではなく、絶対パス)

相対パス名を使用してソフト リンクを作成する方法はありますか? (ホームからの相対パスではなく、絶対パス)

pwd に対して relative を使用してみましたが、機能しません。

現在のパスワードは、ターゲット パスおよび元のパス (リンクを作成する必要がある場所) とは異なります。

ホーム ディレクトリがわからないため、ホームからの相対パス名は使用できません。絶対パス名は必要ありません。

相対パス名を使用してソフトリンクを作成するにはどうすればよいですか?

答え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)。

答え2

相対パスを使用してシンボリックリンクを作成できます

例えば、現在の作業ディレクトリに関連するbbフォルダからシンボリックリンクを作成したい場合、../../bbmylink

ln -s ../../bb/ mylink

$ ls -lsa mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 15:51 mylink -> ../../bb/

mylinkが関連フォルダ内にある別の例pwd

mkdir ../../tst
$ ln -s ../../bb/ ../../tst/mylink
$ ls -lsa ../../tst/mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 16:08 ../../tst/mylink -> ../../bb/

関連情報