フォルダへのシンボリックリンクを作成すると、入力に応じて末尾のスラッシュの有無にかかわらずシンボリックリンクが生成されることがわかりました。たとえば、
$ ln -sfv /ln-test/FOLDER/ test-tail
test-tail -> /ln-test/FOLDER/
$ ln -sfv /ln-test/FOLDER test-notail
test-notail -> /ln-test/FOLDER
$ ll /ln-test
total 16
drwxr-xr-x 2 user wheel 68B 2 Aug 08:35 FOLDER
lrwxr-xr-x 1 user wheel 15B 2 Aug 08:36 test-notail -> /ln-test/FOLDER
lrwxr-xr-x 1 user wheel 16B 2 Aug 08:36 test-tail -> /ln-test/FOLDER/
私のMacとDebianシステムでテストした上記の例で生成されたリンクは、入力の末尾のスラッシュと一致します。
私が理解したところ、これは重要ではないかもしれませんが、最近のObjective-cで末尾のスラッシュが原因で発生するバグが発生しました。それでもこのエラーを追跡する必要がありますが、末尾のスラッシュなしでリンクを再生成すると問題は解決します。
だから私の実際の質問は、ディレクトリリンクにスラッシュがあるかどうかは重要ですか?
ベストアンサー1
/
シンボリックリンクを介してファイルにアクセスすることは、ファイルのベース名が(相対リンク)で始まらない場合はシンボリックリンクテキストに置き換えるか、シンボリックリンクが(フルパス)で始まる場合はシンボリックリンクテキストに置き換えるのと同じです。ファイル)/
絶対リンク)。シンボリックリンクテキストに末尾のスラッシュがある場合は、そうします。
ファイル名の末尾のスラッシュは、「ファイルがディレクトリでなければならない」を意味します。リンクの宛先がディレクトリの場合、その中のファイルにアクセスすると、2つのスラッシュを含む計算パスが生成されます。 1つはシンボリックリンクテキストで、もう1つはディレクトリ区切り文字として使用されます。与えられた
lrwxr-xr-x 1 user wheel 15B 2 Aug 08:36 test-notail -> /ln-test/FOLDER
lrwxr-xr-x 1 user wheel 16B 2 Aug 08:36 test-tail -> /ln-test/FOLDER/
それではtest-notail/foo
と同等で/ln-test/FOLDER/foo
同等test-tail/foo
です/ln-test/FOLDER//foo
。
複数のスラッシュは1つのスラッシュと同じです。(例外が1つあります。一部のシステムでは、パスは正確に2つのスラッシュで始まります。)したがって、ディレクトリシンボリックリンクの末尾のスラッシュ(または複数の後続のスラッシュ)はシステムに影響を与えません。
追加のスラッシュがアプリケーションに影響を与える場合、これはアプリケーションのバグです。