POSIX는 모든 쉘 유틸리티가 파일이 필요한 심볼릭 링크를 해결한다고 보장합니까?

POSIX는 모든 쉘 유틸리티가 파일이 필요한 심볼릭 링크를 해결한다고 보장합니까?

하나 이상의 파일을 인수로 사용하는 POSIX 셸 유틸리티의 경우 POSIX는 기호 링크가 전달될 수 있고 유틸리티가 이를 해결할 수 있음을 보장합니까? 어딘가에 문서화되어 있습니까?

답변1

실제로 POSIX아니요인수로 제공된 기호 링크를 해결하기 위해 지정하는 모든 유틸리티가 필요하며 파일 이름이나 경로가 필요합니다. 하지만 자세히 문서화해심볼릭 링크를 처리하는 방법("심볼릭 링크" 항목을 찾으세요).

일반적으로 경로 구성 요소가 /.

그 다음에

기본 기호 링크 정책은 4개 도메인에 대한 시스템에 설정됩니다. 거의 모든 경우에 이 기본 동작을 재정의할 수 있는 유틸리티 옵션이 있습니다. 네 가지 도메인은 다음과 같습니다.

  1. 경로 이름 인수를 사용하는 시스템 호출에 할당된 기호 링크

  2. 파일 계층 탐색을 수행하지 않는 유틸리티에 대한 명령줄 경로 이름 인수로 지정된 기호 링크

  3. 파일 계층 탐색을 수행하는 유틸리티에 지정된 비디렉토리 유형의 파일을 참조하는 기호 링크

  4. 파일 계층 탐색을 수행하는 유틸리티에 할당된 디렉토리 유형 파일을 참조하는 심볼릭 링크

시스템 호출 동작은 역사적인 이유로 다양합니다.

유용아니요파일 시스템 탐색은 일부 예외를 제외하고 기호 링크를 따릅니다. 여기에는 대부분의 유틸리티가 포함됩니다.

일반적인 규칙은 이 범주의 유틸리티가 매개변수라는 이름의 기호 링크를 따른다는 것입니다.

파일 시스템을 순회하는 유틸리티는 디렉토리 이외의 파일에 대한 기호 링크를 처리하며, 의미가 있으면 따르지 않고 그렇지 않으면 추적합니다.

파일 시스템을 통과하는 유틸리티의 경우 POSIX는 디렉토리 기호 링크와 관련된 특정 동작을 요구하지 않지만 다음을 권장합니다.아니요자세한 추론과 함께 기호 링크를 따르십시오.

위에는 예외가 있으며 시스템이 기호 링크에 특정 속성을 할당하는지 여부에 따라 달라집니다(예를 들어심볼릭 링크가 링크된 파일과 독립적인 권한을 가지고 있는지 여부)

답변2

이는 어떤 소프트웨어에서도 지원해야 하는 기능이 아닙니다.

POSIX는 파일 시스템 함수에 (예를 들어) 심볼릭 링크를 열도록 요청하면 open심볼릭 링크가 가리키는 파일을 정확하게 얻을 수 있음을 보장합니다. (파일이 심볼릭 링크인 경우 파일 열기 시도가 실패하도록 플래그를 명시적으로 설정할 수 있습니다. 그러나 추가 단계를 수행하지 않으면 심볼릭 링크는 가리키는 파일처럼 작동합니다.)

따라서 "다음"은 운영 체제(예: 커널 + libc)에 의해 수행되며 쉘 유틸리티는 심볼릭 링크로 특별한 작업을 수행할 필요가 없습니다. 비정규 파일 처리에 특별히 관심을 두지 않는 한, 제가 원하는 경우에는 모두 아주 적은 수의 비전통적인 파일 유형(디렉토리, 심볼릭 링크, 장치 파일, 명명된 FIFO 및 소켓(잊지 않는다면 그게 전부입니다.))을 처리합니다.

관련 정보