유닉스 시스템이 파일을 처리하는 방법에 대한 기본적인 대답을하려고합니다. 다른 사람들이 지적했듯이 파일 자체는 어떤 유형을보고하지 않으며 커널 자체는 사용할 응용 프로그램을 결정하지 않기 때문에 질문에 대한 문구가 잘못되었습니다.
Unix 및 Windows 운영 체제에서 파일은 단순히 바이트 시퀀스로 구성됩니다. Tanenbaum 운영 체제 , 제 3 판 :
실제로 운영 체제는 파일의 내용을 알거나 신경 쓰지 않습니다. 보이는 것은 바이트입니다. 모든 의미는 사용자 레벨 프로그램에 의해 부과되어야합니다.
이것이 데스크탑 환경에서 xdg-open
특정 파일 유형을 열기위한 기본 응용 프로그램을 결정하는 데 사용되는 이유 입니다.
유닉스 시스템에서 파일은 일반 파일 과 특수 파일로 구분 됩니다. 일반 파일은 텍스트 파일 (ASCII 또는 유니 코드 인코딩) 또는 이진 (실행 코드) 일 수있는 사용자 데이터 일뿐입니다. 특수 파일은 OS 실행에 필수적인 파일입니다. 여기에는 디렉토리, 링크, 파이프, 소켓 및 장치 파일이 포함됩니다. ¹
그것은 파일 이름들이 파일의 종류를 표시하는 확장을 포함하는 것이 관례입니다 수 있을 예를 들어, * C 소스 코드, 타넨 바움에서 등 웹 페이지에 대한 * 또는 .html이 .c :
일부 시스템 (예 : UNIX)에서 파일 확장자는 규칙 일 뿐이며 운영 체제에 의해 시행되지 않습니다. file.txt라는 파일은 일종의 텍스트 파일 일 수 있지만 실제 이름을 컴퓨터에 전달하는 것보다 소유자에게 상기시키는 것이 더 좋습니다. 반면에 C 컴파일러는 실제로 .c로 컴파일 할 파일을 요구할 수 있으며 그렇지 않은 경우 컴파일을 거부 할 수 있습니다.
적절한 확장자없이 파일을 저장하거나 이름을 바꾸어도 해당 파일 형식과 동일한 형식을 유지합니다. 이것은 대부분의 파일 관리자가 파일을 열 응용 프로그램을 결정하는 방법이며, 확장명이 없으면 "이 파일을 여는 데 사용할 프로그램을 선택하십시오."라는 메시지가 표시되는 이유는 무엇입니까?
마지막으로 환경 변수는 시스템 전체 및 사용자 수준 설정을 정의하는 데 사용됩니다. 예를 들어, 변수가 EDITOR
텍스트 등을 처리 할 때 열 수있는 텍스트 편집기 지정하는 데 사용됩니다 vim
, nano
등 프로세스는이 편집 할 때 같은 오픈에있는 편집기, 알 방법이이 git
메시지를 커밋합니다. 그렇지 않으면 사용할 응용 프로그램을 지정해야합니다. vim
설정 filetype on
이 설정된 경우 확장자를 확인하고 파일 내용을 검사하여 파일 유형 을 감지 하면 올바른 구문 강조, 들여 쓰기 등이 적용됩니다. ²
TL; DR
요약하면 OS 자체가 아닌 특정 파일 형식으로 열 프로그램을 결정하는 것은 사용자 수준 응용 프로그램입니다.