모든 다른 Linux 배포판에는 동일한 명령줄이 있습니까? 궁금한 점은 동일한 명령줄이 다양한 Linux 배포판(CentOS, Fedora, Ubuntu 등)에 적용되는지, 아니면 모두 다른 명령줄을 가지고 있는지 궁금합니다.
답변1
나는 이 질문을 다양한 Linux 배포판에서의 명령과 셸의 이식성에 관한 질문으로 해석하기로 결정했습니다. "명령줄"은 "셸 프롬프트에서 작성된 명령" 및 "셸 자체"를 의미할 수 있습니다. 이 답변으로 "명령줄"에 대한 두 가지 해석이 모두 해결되기를 바랍니다.
대부분의 Unix 시스템은 쉘 프롬프트에서 작업하기 위한 동일한 기본 유틸리티를 제공합니다. 이러한 유틸리티는 표준화되었으므로 기본적으로 모두 동일한 방식으로 작동합니다. 또한 셸 명령 작성을 위한 구문이 표준화되었습니다(루프, 리디렉션, 파이프, 백그라운드 프로세스, 변수 할당, 참조 등). 표준은 POSIX라고 불리며여기에서 찾을 수 있습니다("셸 및 유틸리티" 섹션 참조)
대부분의 Unices(특히 Linux에서는 어떤 이유로든)에서 표준 유틸리티는 추가 기능으로 확장되었지만 POSIX 표준에 설명된 기능은 다음과 같습니다.~해야 한다구현됩니다. 표준 유틸리티가 POSIX와 호환되지 않는다면 이에 대한 버그 보고서를 제출해야 할 것입니다.
특히, 쉘 자체는 보다 편리한 대화형 경험을 제공하거나 보다 고급 쉘 프로그래밍 기능을 제공하기 위해 확장되는 경우가 많습니다. 셸은 다른 응용 프로그램과 마찬가지로 다양한 형태(구현)로 제공되며 bash
Linux 시스템에서 가장 널리 사용됩니다(그러나 macOS와 같은 시스템에서는 기본 셸 역할도 하며 모든 Unix에 설치할 수 있습니다). zsh
Shell과 Shell ksh
도 널리 사용되며 다양한 확장 기능 세트를 제공하지만 둘 다적어도POSIX 표준에서 말하는 대부분의 작업을 공통 구문을 사용하여 수행할 수 있습니다(특별한 유형의 배열 및 보다 이국적인 형태의 파일 이름 패턴 일치와 같은 확장을 사용하지 않는 한, 이 중 일부는 쉘 간에도 매우 유사합니다).
POSIX 표준에서 다루지 않는 일부 특정 작업(예: 데이터베이스와의 통신 또는 모니터의 밝기 수준 조정)을 수행하기 위한 도구 또는 특정 Linux 배포판에 특정한 도구(아마도 패키지용)와 같은 비표준 도구의 경우 관리), 특정 Linux 배포 버전, 특정 하드웨어 아키텍처 등의 경우 명령의 이식성은 명령 사용을 지원하는 시스템에 설치된 도구의 올바른 변형 및 버전에 따라 달라집니다.
사용 가능한 다양한 도구와 유틸리티는 Linux 배포판 전반에 걸쳐 상당히 동일하며 이식성은 일반적으로 좋습니다(그러나 배포판 및 아키텍처별 도구는 다르거나 누락될 수 있다는 점에 유의하십시오). 다른 유형의 Unix 시스템에서 실행되어야 하는 스크립트를 사용하고 작성하는 것을 고려할 때 GNU/Linux 도구 및 유틸리티 변형에 고유한 확장이 무엇인지, 그리고 "일반 POSIX/Unix 시스템"에서 실행될 확장이 더 중요하다는 것을 이해하십시오.
답변2
Linux는 운영 체제가 아닌 커널일 뿐입니다. 명령, GUI 프로그램, 아름다운 데스크탑 등 직접 사용하는 것들은 커널이 제공하는 것이 아니라 운영 체제와 함께 배포되는 사용자 수준 구성 요소에 의해 제공됩니다.
셸에서 사용하는 명령은 셸 내장 또는 외부 패키지에서 제공됩니다. 설치한 소프트웨어에 따라 동일할 수도 있고 다를 수도 있습니다. 항상 셸에서 명령을 사용하지만 실제로는 셸과 거의 관련이 없습니다(이는 Windows/OS X/*BSD에도 적용됨). 셸이 어떻게 작동하는지 이해하세요.
일부 배포판에서는 기본적으로 몇 가지 공통 소프트웨어를 설치하므로 몇 가지 공통 명령을 사용할 수 있습니다. 거의 모든 배포판 에 소프트웨어가 설치되어 있기 ls
때문에 거의 모든 배포판에서 사용할 수 있습니다 .linux-utils
일부 배포판에서는 원하는 패키지를 더 자유롭게 선택할 수 있는데, 이 경우 이 명령을 제공할 수 있는 소프트웨어나 ls
설치를 거부하면 해당 패키지를 사용하지 못할 수도 있습니다. linux-utils
또한 서로 다른 패키지가 동일한 이름의 명령을 제공하는 경우 서로 충돌할 수 있다는 점에 유의하세요.
답변3
명령줄이 해석되는 방식은 다음에 따라 다릅니다.껍데기실행 중인 프로그램과 호출된 프로그램이 인수를 해석하는 방법입니다.
다양한 셸이 있으며, 한 셸의 특정 기능을 사용하는 명령줄이 다른 셸에서는 작동하지 않을 수 있습니다.
즉, 일반적으로 다양한 Linux 배포판에는 최소한 동일한 기본 셸이 포함되어 있으므로 동일한 셸을 실행할 수 있다면 동일한 명령줄을 사용할 수 있습니다. (이것이 쉘 스크립트에서 일반적으로 필요한 쉘을 첫 번째 줄에 넣는 이유입니다.)
편집하다
이전 쉘 스크립트를 보세요 /etc/init.d
. 각 스크립트는 다음으로 시작합니다.
#!/bin/sh
따라서 여기에는 Debian by 와 같은 일종의 표준 쉘이 필요합니다 dash
. 비교를 위해 저는 다음과 같은 쉘 스크립트를 작성했습니다.
#!/bin/bash
가끔 확장 프로그램을 사용하기 때문입니다 bash
. 다른 껍질도 많이 있습니다.여기