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
フォルダからシンボリックリンクを作成したい場合、../../bb
mylink
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/