Bash条件式で「-h」と「-L」の違いは何ですか?

Bash条件式で「-h」と「-L」の違いは何ですか?

マニュアルページによると:

       -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? */

おすすめ記事