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