나는 유닉스와 리눅스에서 BSD와 GNU 등에 대해 많이 읽었지만 BSD와 GNU 사용자 영역 사이에 실제로 언급되는 실제 차이점이 무엇인지 이해하지 못합니다. 정교한 사람이 있습니까?
대답 할 때 GNU / 리눅스가 주류 UNIX가 아니었던시기 (OS X 제외)를 경험할만큼 오래 살지 않았다는 점을 명심하고 역사적 연결을 충분히 설명하십시오.
나는 유닉스와 리눅스에서 BSD와 GNU 등에 대해 많이 읽었지만 BSD와 GNU 사용자 영역 사이에 실제로 언급되는 실제 차이점이 무엇인지 이해하지 못합니다. 정교한 사람이 있습니까?
대답 할 때 GNU / 리눅스가 주류 UNIX가 아니었던시기 (OS X 제외)를 경험할만큼 오래 살지 않았다는 점을 명심하고 역사적 연결을 충분히 설명하십시오.
답변:
"userland"라는 용어는 서로 다른 맥락에서 많은 것을 언급 할 수 있지만 여기서는 "GNU userland"대 "BSD userland"를 배포판과 함께 제공되는 기본 최소 프로그램 세트로 해석합니다.
가장 큰 차이점은 두 사용자 영역이 완전히 다른 소스 코드로 시작한다는 것입니다. GNU 고양이 소스 코드 NetBSD 고양이 소스 코드 . 개념이 간단한 프로그램에서 NetBSD의 고양이가 전통적인 단일 문자 명령 행 플래그를 사용한다는 것을 알 수 있습니다. GNU 프로그램에는 단일 문자 플래그뿐만 아니라 --something-long
유형 옵션 도 있습니다. GNU 프로그램은 또한 POSIX 호환성을 지향합니다.
소스 코드의 차이로 인해 두 사용자 영역에서 서로 다른 동작을하는 경우가 있습니다.
또한 NetBSD는 (적어도) 표준 C 라이브러리 인 자체 버전의 libc를 사용하는 것처럼 보입니다. 나는 여기 내 머리 위로 들어가고 있지만 libc와 동적 연결은 이상하게 상호 관련되어 있습니다. 다시 말하지만, 소스 코드가 다르면 동작이 달라집니다.
나는 쉘 사용자로서, 당신은 그것이 ps
다르게 행동 하고, 당신 과 ls
는 약간 다른 출력 을 줄 수 있다고 생각 합니다. 명령 행 플래그 --long-option
유형 을 사용하는 경우 일부 프로그램에 대해 동등한 명령 행 플래그를 찾아야 합니다.
역사적으로, BSD 사용자 영역은 V6 및 V7 Bell Labs Unix에서 32V 포트를 통해 VAX 하드웨어로 직접 내려갑니다. GNU 사용자 영역은 80 년대 초반 코드를 철저히 보호하려는 AT & T의 시도에 대한 반응으로 적어도 다소 새로 작성되었습니다. AT & T는 1983 년 벨 시스템 사업이 끝난 후 유닉스를 "수익 화"하려고 노력했다. 그 중 일부는 대부분의 사람들이 소스 코드를 보지 못하게하는 방식으로 소스 코드에 라이센스를 부여하는 것이 었습니다. Richard Stallman과 다른 사람들은 이것에 문제가있었습니다. GNU 프로젝트는 자유롭게 공유 할 수있는 유닉스 계열 시스템을 만들기 위해 특별히 존재했습니다.
한편 AT & T는 1993 년까지 캘리포니아 대학 시스템을 BSD ( 'B'는 캘리포니아 대학이 위치한 버클리) 시스템에 대해 소송을 제기했습니다. 버클리 사람들은 AT & T의 모든 원본을 새로운 코드로 교체했으며,이 새로운 코드는 최소한 NetBSD 사용 자국의 조상이되었습니다. AT & T와 UCB는 1994 년 합의에 와서 밝혀 2004 년에 대중에게.
당연히 적어도 아이디어는 교차 수분을 가지므로 GNU와 BSD 사용자 랜드 사이에는 개념적 유사성이 있지만 코너 케이스는 분명히 다릅니다.
sed
긴 입력 라인 의 질식 또는 grep
이진 데이터 의 segfaults는 실제로 매우 실망 스럽습니다 .