relativeを、それが置かれているディレクトリに解決するシンボリックリンクが必要です。そのようなものを作成するために使用されるコマンドは何ですか?
ln -s ../some/other/file linkname
を実行します指定したパスはファイルとともに保存されます。ファイルにアクセスすると、保存されているパスが検索され、ファイルに対して相対的に展開されます。リンクを作成したときのディレクトリはわかりません。
GNU coreutils 'ln(> = 8.16)の最近のバージョンは、_--relative
_(または_-r
_)オプションをサポートしています。つまり、2つの絶対値で_ln -s
_を呼び出すことができますまたは(作業ディレクトリに対する)相対パスと、シンボリックリンクに書き込む必要がある正しい相対パスがわかります。
基本的に、シンボリックリンクは、ファイルを含むディレクトリエントリよりもテキストファイルに近いということを理解する必要があります。だからあなたなら
echo ../poo >/file/name
それはに非常に似ています
ln -s ../poo /file/name
システムは/file/../poo
はまったく存在します。これは、シンボリックリンクに挿入されるテキストの一部です。何かがopenシンボリックリンクを試みたとき、それはシステムがそれを解決しようとしたときです。
ファイル名補完機能を備えたシェルを使用している場合、この機能を使用すると、完全に別のディレクトリのシンボリックリンクのターゲットとして使用した場合でも、現在の作業ディレクトリを基準にファイル名を補完できるため、混乱を招く可能性があります。
相対リンクは、OS Xで私にとって扱いにくいものでした。
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin ~/bin
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin/ ~/bin
どちらも機能しませんでした(何かが作成されましたが、それはディレクトリではありませんでした)。 絶対パスを使用して目的のリンクを作成しました。
~/Dropbox/git/dave-bot $ ln -s ~/Dropbox/git/codyhess/bin/ ~/bin
相対パスを使用してシンボリックリンクを作成する方法をさらに詳しく説明したかっただけです(詳細な例を示します)。
Ignacio Vazquez-Abramsがコメントで述べたように、シンボリックリンクが作成される場所に相対的なファイル/フォルダーの場所を指定する必要があります。現在のディレクトリではありません。
例
/usr/share/nginx/html/_src/learn
にいます/usr/share/nginx/html
にシンボリックリンクcoding
を作成します
相対シンボリックリンクを作成(理論):
Sudo ln -s /path/to/source/file-or-folder/relative/from/symlink /path/to/symlink/relative/to/current/location
実際の相対シンボリックリンクを作成:
Sudo ln -s ./_src/learn/coding ../../coding
詳細(同じ例)
current path: /usr/share/nginx/html/_src/learn
symlink(to be) relative to current path: ../../coding
symlink location (absolute): /usr/share/nginx/html/coding
folder/file relative to symlink location: ./_src/learn/coding
folder/file absolute path: /usr/share/nginx/html/_src/learn/coding