!["umount" 철자가 "unmount"가 아닌 이유는 무엇입니까?](https://linux55.com/image/48339/%22umount%22%20%EC%B2%A0%EC%9E%90%EA%B0%80%20%22unmount%22%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
umount
이 명령이 존재하지 않는 역사적 또는 실제적인 이유가 있는지 궁금합니다 unmount
.
답변1
이는 다음과 같이 돌아갑니다.유닉스의 첫 번째 버전, 모든 표준 파일 이름의 길이는 최대 6자에 불과합니다(생각해 보세요 passwd
). 이 버전도 백일해를 지원합니다.파일 이름은 8자입니다.. 대부분의 명령에는 .c
(eg) 로 끝나는 관련 소스 파일이 있으며 umount.c
기본 이름으로 6자만 남깁니다.
6자 제한은 이전 개발 릴리스에서 이어졌거나 당시 6자 제한이 있었던 IBM 시스템에서 상속되었을 수도 있습니다. (초기 C 구현에는 식별자에 대한 6자 제한이 있었습니다. 더 긴 식별자가 허용되었지만 컴파일러는 처음 6자만 확인했으므로 foobar1
과 foobar2
는 동일한 변수입니다.)
(원인을 알 수 없는 오류로 철자를 나열한 매뉴얼 페이지가 기억나는 것 같은데 umount
지금은 찾을 수 없습니다.)
답변2
한동안 잘못된 정보가 있었던 것 같습니다.
명령이 축약된 이름을 갖는 가장 가능성 있는 이유는 명령이 umount
사용하는 시스템 호출의 이름에서 파생되었기 때문입니다: umount()
.
"오프로드" 시스템 호출에 해당 이름이 붙은 가능한 이유 umount()
는 일부 시스템 유형에서 초기 링커가 외부 식별자의 길이를 6자(대소문자 1개만)로 제한했기 때문입니다(그리고 이러한 도구와의 일관성을 유지하기 위해). 의미가 있음) 당시) "umount"는 "unmount"의 약어의 논리적 형식이었습니다. 초판 179페이지 참조C 프로그래밍 언어출판 당시 관심 있는 다양한 시스템에 대한 외부 식별자 특성 목록을 가져옵니다.
또한 초기 C 컴파일러에서는 식별자의 처음 8자를 중요한 문자로 처리했지만 더 긴 식별자를 허용했습니다. (K&R 33페이지)
기호 테이블의 식별자 길이는 다음과 같습니다.아무것도 없다적어도 Unix에서는 파일 이름 길이를 직접 처리할 수 있는 방법이 없습니다(V1 현재 Unix 기호 테이블에는 식별자로 8자가 있지만 V1 매뉴얼에는 어셈블러가"최대 7바이트의 기호 생성").
답변3
같은 이유로 creat
시스템 호출의 철자가 create
?