개요
(아직 설정을 하진 못했지만) Vim에서 파일 저장 후 에디터를 종료할 때마다, 파일 마지막에는 개행으로만 이뤄진 빈 라인이 붙은 채로 저장이 되길 희망하여 탐색 중
이 과정에서 개행이 EOL (End of Line)으로 사용된다는 것과, 파일 끝은 EOL로 마친다는 것을 알 수 있었음
** 물론 개행으로만 이뤄진 빈 라인을 추가하는 것과는 별개의 이야기지만, 대체로 EOL을 다루는 글이 많았기에 호기심이 생김
왜 그런지 이유가 궁금하여 탐색
POSIX
프로그래밍을 하면서 POSIX라는 말은 참 많이 들어봤지만, 무엇인지 알아보려고 하진 않았던 것 같음
POSIX (Portable Operating System Interface)는 간단하게 운영체제 간 이식성을 높이기 위한 인터페이스 명세라고 볼 수 있음
** X는 유닉스 계열 운영체제에서 보통 X라는 명칭이 붙는 사실에서 유래
서로 다른 Unix 운영 체제에서의 공통 API를 정리하여 호환성을 높이면, 구현하는 개발자 입장에서는 운영체제에 구애 받지 않고도 여러 운영체제에서 동작하는 프로그램 및 환경, 설계 등을 이끌어낼 수 있음
실제로 POSIX에는 시스템 콜, 파일과 디렉토리, 시스템 데이터베이스, 압축 포맷, 텍스트 파일과 라인에 대한 규격들이 다수 정의되어 있음
EOL을 붙이는 이유
위에 POSIX를 언급한 것에서 알 수 있듯이, POSIX의 명세상 EOL에 대해 정의하고 있기 때문
•
라인의 끝은 개행으로 마친다.
•
파일은 라인의 집합이다.
이 두가지 정의 때문에 모든 파일의 끝은 개행으로 마침
영향도
개행이 없다는 것은 라인의 끝을 인식할 수 없다는 것이고, 이는 곧 파일의 끝을 알 수 없다는 것으로 이어지니, 파일 간의 구분이 명확하지 않다는 것을 의미
즉, 여러 파일들을 이용하는 프로그램이나 도구가 있다면, 파일을 인식하기 어려울 수 있음
gcc에서 이러한 경고 및 컴파일 오류가 많았던 것으로 기억하여 확인해보려 했으나, gcc 15버전에서는 EOL로 마치지 않아도 알아서 보정해주는 것 같아서 확인이 어려웠음
그래서 다른 사례들을 찾아봤는데, gcc 11버전에서는 EOL로 마치지 않았을 때 일관성 없는 동작과 오류가 발생하는 이슈가 게재된 것을 볼 수 있었음
이러한 연유로 Vim을 포함한 대부분의 파일 에디터에선 자동적으로 EOL을 추가하는 식의 동작을 수행하게 되고, 작성자 입장에서도 EOL에 대해서 인지하고 있어야 되겠다고 생각