매뉴얼 페이지에 따르면:
-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? */