스크립트를 실행하기 위해 .sh 파일 대신 .txt 파일을 실행 가능하게하지 않는 이유는 무엇입니까? 해야하는 것이 무엇인지 궁금 했습니다

명령을 .sh파일 안에 넣고를 .txt사용하여 실행 가능하게하여 동일한 스크립트를 수행 할 수 있기 때문에 실행 가능한 명령을 파일 내에 넣어 단일 스크립트를 작성 해야하는 것이 무엇인지 궁금 했습니다 chmod.

나는 이것이 파일 확장자로 수행 할 수 있다고 가정합니다. 그래서 나는 .sh확장 의 필요성에 대해 상당히 혼란스러워 합니다. 도움을 주시면 감사하겠습니다.



답변

올바르게 찾은대로 파일 확장자가 특정 항목과 일치하지 않아도됩니다.

유닉스 계열 시스템에서 파일 유형은 일반적으로 파일의 내용 (예 : 처음 몇 바이트의 “매직 번호”또는 기타 특성 구조)에서 파생되며 이름이 아닙니다. 확장명을 완전히 생략 할 수도 있습니다.이 확장명은 종종 실행 파일에 대해 수행됩니다.

file명령을 확인하면 내용에서 파일 유형에 대해 찾을 수있는 정보가 표시됩니다.

실행 스크립트의 경우 시스템은 첫 번째 줄에 소위 “shebang”을 기대합니다.

#!/usr/bin/env python3

스크립트 파일을 인수로 사용하여 인터프리터로 실행할 프로그램을 나타냅니다. 그러한 shebang없이 텍스트 파일을 실행하면 기본 쉘, 즉 Bash를 사용하여 텍스트 파일을 시도하고 해석합니다.

따라서 유닉스 / 리눅스 시스템에서 파일 이름 확장자는 대부분 사용자가 특정 파일에 포함될 것으로 예상되는 것을 빠르게 인식 할 수있는 힌트입니다. 예를 들어 파일을 더 빨리 찾는 데 도움이되는 규칙이기도합니다.

그러나 이름과 확장자가 중요한 일부 예외가 있습니다 (예 : 명명 규칙을 따라야하는 일부 시스템 구성 파일 또는 많은 이미지 뷰어 및 편집기에서도 파일 유형을 나타 내기 위해 확장자가 필요합니다).

또한 한 번 봐 가질 수 있습니다 파일 확장자 (운영 체제) 어떤 목적을 가지고 있습니까를?


답변

UNIX / Linux 파일 이름에는 파일 “extension”또는 “type”이 없습니다.

다른 사람들이 지적했듯이 “유형”은 시스템에서 관련 마법을 사용할 수 있다고 가정하고 파일 명령을 사용하여 찾을 수 있습니다. UNIX / Linux 파일 이름은 일반적으로 사용 가능한 문자를 포함 할 수 있지만 사람과 기계 모두 컨텐츠 (및 컨텐츠 사용)에 대한 판단을 할 수 있도록 이름에 일부 규칙을 사용하는 것이 도움이됩니다.

예를 들어 파일 이름 끝에 “.tmp”문자열을 사용하는 대신 임시 파일을 나타 내기 위해 파일 이름의 첫 문자로 쉼표를 사용하는 경우가 많습니다. 결과는 동일하며 짧은 시간 동안 만 필요한 데이터를 포함하는 파일이지만 이름에는 “.”이 필요하지 않습니다. 그 안에 문자열 “tmp”. 예를 들어 파일 이름 목록을 구문 분석 할 때 이점이있을 수 있습니다. 그러나 그것은 내 협약이며 다른 누군가는 “.tmp”를 임시 파일 이름의 규칙으로 사용하여 다른 사람을 결정할 수도 있습니다.

그래서 당신에게 대답하는 것은 유닉스 / 리눅스 파일 확장자는 다른 운영 체제와 파일 시스템에서 일반적으로 사용되는 파일 확장자처럼 보이는 일련의 규칙 일 뿐이라는 것입니다.


답변