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.

똑같은 말을 하는 것 같은데 왜 두 개의 별도 표시가 있는 걸까요? 역사적 호환성 때문인가요? Bash 버전 간에 미묘한 차이점이 있습니까? 다른 건 없나요?

답변1

다른 점이 없다. POSIX 설명두 가지 옵션은 다음과 같습니다.

경로 이름이 기호 링크에 대한 기존 디렉토리 항목으로 확인되면 참입니다. 경로 이름을 확인할 수 없거나 경로 이름이 심볼릭 링크가 아닌 파일의 기존 디렉터리 항목으로 확인되면 False를 반환합니다. 경로 이름의 마지막 구성 요소가 기호 링크인 경우 기호 링크를 따르지 않습니다.

당신이 말했듯이, 두 가지를 모두 갖는 이유는 아마도 지원 test및 유틸리티 [의 역사적 구현에 의해 이루어진 가장 일반적인 선택일 것입니다.

test및 에 내장 [된 유틸리티 bash는 동일한 작업을 수행하며 항상 그렇게 해왔습니다. 현재 Git 저장소에서 사용 가능한 가장 오래된 bash소스에는 동일한 문구가 있습니다(버전 2.04,1991년부터).

1991년 실제 시행, 댓글도 있습니다.

    case 'L':           /* Same as -h  */
    case 'h':           /* File is a symbolic link? */

관련 정보