マニュアルページによると:
-h file
True if file exists and is a symbolic link.
...
-L file
True if file exists and is a symbolic link.
同じことを言うようですが、なぜ2つの別々のマーキングがあるのでしょうか?歴史的互換性のためですか? Bashのバージョン間に微妙な違いはありますか?他にはありませんか?
答え1
他に何もない。 POSIXの説明2つのオプションは次のとおりです。
パス名がシンボリックリンクの既存のディレクトリエントリとして解決された場合は真です。パス名が解決できない場合、またはパス名がシンボリックリンクではないファイルの既存のディレクトリエントリとして解決された場合は、Falseを返します。パス名の最後のコンポーネントがシンボリックリンクの場合、シンボリックリンクに従わないでください。
あなたが言ったように、両方を持つ理由は、おそらくサポートとtest
ユーティリティ[
の歴史的実装によって行われた最も一般的な選択肢です。
test
とに組み込まれ[
たユーティリティbash
は同じことを行い、常にそうしてきました。 Gitリポジトリで現在利用可能な最も古いbash
ソースには同じフレーズがあります(バージョン2.04、1991年から)。
1991年実践施行、コメントもあります。
case 'L': /* Same as -h */
case 'h': /* File is a symbolic link? */