Linux와 BSD의 일반 프로그램(예: "ls", "cat")은 동일한 소스 코드에서 나오나요? [복사]

Linux와 BSD의 일반 프로그램(예: "ls", "cat")은 동일한 소스 코드에서 나오나요? [복사]

Linux와 BSD 모두 ls및 및 cat와 같은 공통 프로그램을 가지고 있습니다 .echokill

동일한 소스 코드에서 나온 것입니까, 아니면 Linux와 BSD가 각각 이러한 프로그램에 대한 고유한 소스 코드를 가지고 있습니까?

답변1

리눅스는 커널이다. 애플리케이션 코드 없이 시작됩니다.

리눅스-기반운영 체제가 반드시 동일한 소스 코드를 사용하는 것은 아닙니다.서로, BSD와 동일한 코드는 말할 것도 없습니다. 상당히 기본적인 몇몇 프로그램에는 여러 가지 구현이 있는 것으로 알려져 있습니다.

여기에는 다음이 포함되지만 이에 국한되지는 않습니다.

BSD는 운영 체제입니다. 그들을하다이러한 프로그램에 대한 코드가 포함되어 있습니다. 그러나 단일 BSD 운영 체제는 없으며 이러한 프로그램의 코드는 때때로 NetBSD, FreeBSD, OpenBSD 및 DragonFly BSD 간에 다릅니다. 또한 여러 Linux 기반 운영 체제에서 사용되는 코드와도 확실히 다릅니다.

Apple/NeXT는 MacOS/NeXTSTEP에서 BSD 응용 소프트웨어를 사용하지만 (다른) BSD와는 다른 방식으로 ACL을 지원하도록 여러 프로그램을 향상시키는 것으로 알려져 있습니다. chmod예를 들어 명령을 사용하여 액세스 제어를 설정할 수 있습니다. 따라서 이러한 명령의 다윈주의 버전은 다시 다릅니다.

세 가지 추가 우여곡절이 있습니다.

kill및 같은 프로그램은 echo일반적으로 쉘에 내장되어 있습니다. 따라서 이러한 명령의 코드는 운영 체제가 아니라 사용 중인 셸에 따라 다릅니다.

그런 다음 BusyBox와 ToyBox가 있는데 둘 다 Linux 기반 운영 체제와 BSD에서 사용할 수 있으며 자체 구현이 있는 일부 전자에서 이러한 명령의 주요 구현으로 사용되기도 합니다.많은주문하다.

그런 다음 Illumos 및 Schillix와 같은 도구를 생산하는 OpenSolaris가 있는데, 모두 Solaris에서 구현되는데 이는 또 다릅니다.

여기에는 1980년대 후반과 1990년대에 많은 Unix 프로그램을 복제하려는 "PD" 노력과 그에 따른 대략 30년 간의 셔플을 통해 전체 오픈 소스 버전에 대한 BSD와 AT&T Unix 사이의 원래 분열을 포함하여 완전한 역사가 있습니다. Solaris 코드 및 OpenBSD에 대한 일부 재구현. 예를 들어, 사람들이 도구의 역사에 대해 오해할 수 있더라도 구현이 있습니다. 예를 들어 많은 사람들은 이것이 원래 Unix 도구라고 잘못 믿고 있거나 적어도 1987년 Paul Vixie가 작성한 cron단일 스타일이라고 잘못 믿고 있습니다. cron"PD")로 표시하거나 다른 사람들이 유사한 대안을 작성했다는 사실을 깨닫지 못하는 것은 사소한 일이 아닙니다.

답변2

이 프로그램은 Linux와 BSD에서 동일합니까?

짧은 대답은 다음과 같습니다.불필요한.

ls, cat, 등 echo일반적인 프로그램의 소스코드는 kill무엇에 의존하는가 ?사용자 영역그들은 출신입니다. 즉, 시스템은 사용자 영역을 사용합니다. Linux 커널의 가장 일반적인 사용자 영역은 GNU입니다. 따라서 GNU/Linux라는 이름이 붙었습니다. 그러나 다른 사용자 영역은 Linux 커널과 통합됩니다.

BSD는 일반적으로 GNU와 같은 다른 사용자 영역과 별도로 개발된 자체 사용자 영역을 가지고 있습니다. BSD 자체도 코드 기반이 다릅니다. 예를 들어 FreeBSD와 OpenBSD에는 모두 "BSD 사용자 영역"이 있지만 코드 기반이 다릅니다. 해당 매뉴얼 페이지(예를 들어)를 보면 ps사용할 수 있는 다양한 매개변수가 있습니다.

이유POSIX개발의 목적은 여러 코드 기반의 문제를 해결하는 것입니다. 사용자 공간과 함께 제공되는 범용 유틸리티가 POSIX 표준을 준수한다면 GNU, FreeBSD, OpenBSD, AIX 또는 기타 UNIX 기반 시스템에서 왔든 거의 동일한 방식으로 작동할 것이라고 확신할 수 있습니다.

아시다시피 위에 나열된 사용자 영역(AIX 제외)은 모두 오픈 소스입니다. 코드 저장소를 자유롭게 탐색해 보면 모두가 동일하지 않다는 것을 금방 알게 될 것입니다.

참고: GNU/Linux가 가장 널리 사용되지만 과거에는 FreeBSD/NetBSD 커널과 함께 GNU 사용자 영역을 사용하려는 시도가 있었습니다. Wikipedia에서 이에 대한 자세한 내용을 읽을 수 있습니다.여기.

답변3

답변4

위의 정답 외에도 (거의?) 모든 Linux 배포판의 기본 셸은 bash이고 최소한 OpenBSD 및 FreeBSD의 기본 셸은 bash가 아니라는 것을 알 수 있습니다. csh일 수도 있고 ksh일 수도 있지만 BSD 변형을 사용한 지 몇 년이 지났기 때문에 잘 모르겠습니다. 어쨌든 bash의 기능은 없었고 이전 명령을 반복하는 방식조차 혼란스럽습니다. 쉘의 차이점으로 인해 더 간단한 명령 중 쉘 내장 명령과 독립 실행형 프로그램이 변경될 수 있습니다.

현재 GNU 사용자 영역에 xBSD 커널을 제공하는 여러 배포판이 있으며 그 반대도 가능하므로 이 질문에 대한 절대적으로 명확한 대답은 없습니다. 시스템에 무엇이 있는지 알 수 있는 유일한 확실한 방법은 패키지 관리자를 사용하여 소스 코드를 다운로드하고 확인하는 것입니다. 또는 배포판에 탐색 가능한 소스 코드가 있는 경우 온라인으로 확인하는 것입니다. 단, 해당 라이센스를 확인하면 매우 유익합니다. 좋은 지침.

관련 정보