“쉘”과“배쉬”라는 용어의 차이점은 무엇입니까?


11

"Shell"과 "Bash"의 차이점은 무엇이며이 용어의 의미는 무엇입니까?

내가 아는 한 차이는 없습니다. 그러나 "쉘"과 "배쉬"에 관한 많은 책을 보았습니다!

따라서 Mac OS X에서 터미널로 작업하고 bash 스크립트를 작성하려는 경우 어떤 종류의 책을 사용 해야하는지 궁금합니다.


7
클래스 대 인스턴스 구별입니다.
Kaz

1
흥미로운 독서 자료 : unix.stackexchange.com/questions/4126/…
Bernhard

1
첫 번째 껍질은 Bourne이라는 사람이 작성했습니다. BASH는 'Boune Again Shell'의 약자입니다. 즐거운 시간을 보내는 것이 중요합니다!
Kinjal Dixit

답변:


31

" "은 운영 체제에 대한 인터페이스를 제공하는 소프트웨어입니다. 예를 들어, explorer.exe 는 Windows의 기본 셸이며 ( 대안이 있지만 ) OS X Finder 는 거의 동일한 기능을 제공합니다. Linux / * nix에서 셸은 데스크탑 환경 ( Gnome 또는 KDE 등 )의 일부이거나 그 위에 배치 된 별도의 소프트웨어 구성 요소 (예 : Unity 또는 Cinnamon ) 일 수 있습니다.

위의 예는 마우스 커서를 사용하여 상호 작용할 수있는 그래픽 사용자 인터페이스 (GUI)를 제공하기 위해 창, 메뉴, 아이콘 및 기타 이러한 요소의 조합을 사용하는 모든 그래픽 쉘입니다. 그러나 Bash와 같은 소프트웨어 또는 스크립트 작성과 관련하여 "쉘"은 일반적으로 전체 텍스트 기반을 제외하고 그래픽 쉘과 거의 동일한 작업을 수행하는 명령 줄 인터프리터를 의미합니다.

배쉬는 명령 줄 셸의 특정 예이며, 대체로 디자인 된 많은 리눅스 배포판뿐만 아니라 OS X의 그것의 기본 인, 아마도 가장 잘 알려진 것들 중 하나입니다 Bourne 쉘 강타 스탠드 ( "Bourne again shell")의 경우 첫 번째 유닉스 쉘 중 하나입니다 .

Windows에서 명령 줄 셸의 예로는 cmd.exe (일명 명령 프롬프트) 및 PowerShell이 있습니다.


3
Finder는 일반적으로 OS X에서 쉘이라고하지 않습니다. 대부분의 GUI 및 창 관리 기능은 다른 프로세스에서 처리합니다.
Lri

1
@LauriRanta Wikipedia가 동의하지 않는 것 같습니다 . 다른 프로세스의 도움이 있는지 여부에 관계없이 사용자는 GUI를 통해 기본 OS와 상호 작용할 수 있으므로 그래픽 쉘의 설명에 적합합니다.
Indrek

1
그래픽 쉘이라는 용어는 파일 관리 응용 프로그램에도 적용될 수 있습니다. 그러나 OS X에서는 일반적으로 사용되지 않으며 Finder는 Windows 셸 또는 Unity보다 Nautilus와 유사합니다.
Lri

6
@LauriRanta : 빠른 퀴즈, 노틸러스의 아이콘은 무엇입니까?
Lie Ryan

2
@LauriRanta Dock이 쉘을위한 더 나은 후보가되지 않습니까? 프로그램 실행 및 문서 열기, Expose / Spaces / Mission Control, AFAIK Launchpad 및 작업 전환기는 모두 Dock 기능입니다.
Daniel Beck

13

배쉬는 여러 껍질 중 하나입니다.

OSX 또는 Linux와 같은 Unix 또는 Unix 계열 시스템의 쉘은 운영 체제에 명령 행 인터페이스를 제공하여 명령을 입력하고 실행할 수있는 응용 프로그램입니다. 선택할 수있는 다양한 쉘이 있지만 모두 파일 이름 와일드 카드, 파이프, 여기 문서, 명령 대체, 변수 및 조건 테스트 및 반복을위한 제어 구조를 제공합니다.

원래 유닉스 셸은 Bell Labs의 Stephen Bourne이 작성한 Bourne 셸이었습니다 . 그런 다음 tcsh로 업데이트 된 이후 버클리의 Bill Joy가 작성한 C 쉘 이 나왔습니다 . 다른 쉘로는 David Labn이 Bell Labs에서 작성한 Korn 쉘 , ksh, GNU 프로젝트를 위해 Brian Fox가 sh를 무료로 대체 한 "Bourne again shell"인 bash가 있습니다.

오늘날 bash는 아마도 가장 인기있는 유닉스 셸이지만 많은 사람들 (포함)은 여전히 ​​더 좋은 구문을 기반으로 C 셸을 선호합니다. 기본적으로 맛의 문제이므로 시작하는 데 도움이되는 Wikipedia 기사를 읽는 것이 좋습니다.


2
쉘은 반드시 명령 줄 기반 일 필요는 없으며, 노틸러스, Windows 탐색기, Finder 등 많은 그래픽 쉘이 있습니다. 쉘의 핵심은 핵심 OS 기능 / 시스템 호출을 둘러싼 래퍼 / 사용자 인터페이스 / 쉘입니다. 즉, 셸은 리소스 관리 (예 : 파일 관리) 및 프로세스 관리를 제공합니다.
Lie Ryan

1
@LieRyan 이들은 쉘이 아니며 파일 관리자입니다. 쉘은 통합 명령 / 스크립트 인터프리터가 내부에서 실행될 수 있도록합니다. 내 대답을 참조하십시오. 파일 관리자에서 프로그램을 실행할 수 있다고해서 쉘이되지는 않습니다.
Bill Rosmus

@ BillR : 당신은 Gnome Shell 사람들에게 당신의 정의를 알려 주어야합니다.
paradroid

2
나는 그래픽 쉘이 이제 쉘로 간주된다는 Lie Ryan과 paradroid에 동의하는 경향이 있습니다. 나는 명령 줄 패러다임에 투자 한 사람으로서 90 년대까지 그래픽 쉘을 쉘로 받아들이지 않았습니다. 그러나 모든 제어판 위젯과 최신 그래픽 셸의 기능을 사용하지 않는 경우 일반적으로 셸을 호출하고 해당 사용법이 올바른 것입니다. 그것들은 기본 OS 주변의 비교적 얇은 사용자 인터페이스 레이어 인 셸의 정의와 일치합니다. 그래픽 셸은 많은 사용자가 신경 쓰지 않는 스크립트를 작성하는 방법이 약합니다.
Nicole Hamilton

6

'쉘 (shell)'이라는 용어는 잘 알려져 있습니다. 문자 그대로 O / S 주변의 셸이므로 사용자가 컴퓨터와 상호 작용할 수 있습니다. 원래 생각했을 때 그래픽 사용자 인터페이스 (windows :()가없는 경우는 거의 없었습니다. 모든 것은 명령 행에서 이루어졌지만 명령 행조차도 살 곳이 필요했습니다. .

간단히 말해서, 명령 행이 유용하려면 호출 할 수있는 명령이 필요했습니다. 따라서 명령 줄에서 사용할 수 있도록 프로그램을 셸 내부에서 실행했습니다. 프로그램은 자체 패키지로 밀접하게 그룹화되어 있으며 함께 작동하도록 설계되었습니다. 여기에는 "ls"및 "grep", "ps", "sed"등과 같은 프로그램이 포함됩니다. ">"및 "<"와 같은 파일 리디렉션 명령 및 파이프 ( "|")도 포함됩니다. 더 중요한 것은 조건부 연산과 같은 프로그래밍 구문도 포함합니다 (예를 들어, for 루프, while 루프, 명령문을 실행할 때 반환되는 상태를 확인하는 방법 (예 : "ls"를 실행하는 경우 무언가 찾았습니까?)) 그런 식으로). 이것들은보다 복잡한 커맨드 라인 (쉘) 스크립트의 기초입니다.

누군가 'Bash Shell'이라는 용어를 사용하면 O / S 쉘에서 실행되는 'Bash'라는 명령 줄 인터프리터에 대해 이야기합니다. 'Bash Shell Interpreter'의 줄임말이라고 생각할 수 있습니다. Bourne과 같은 다른 통역사가 있습니다 (Bash는 '새롭고 개선 된 Bourne Shell이며 Bourne Again Shell의 줄임말입니다). C-Shell, K-Shell (복잡한 쉘 스크립트를 작성하는 많은 사람들이 선호) 및 기타 GNU 변형도 있습니다. 수년에 걸쳐 쉘없이 사용하는 특정 명령 행 인터프리터를 참조하는 것이 일반적이되었습니다. 하나는 다른 것 없이는 사용할 수 없기 때문입니다. 그러나 현실은 그들이 다르다는 것입니다.

이들이 실제 쉘이 아닌 명령 행 인터프리터로 올바르게 알려진 이유는 쉘에 있으며 프로그램에서 실행중인 것처럼 모든 명령을 해석하기 때문입니다. 그리고 쉘은 올바른 표준을 충족하는 한 어떤 인터프리터를 실행하든 상관하지 않습니다.

그리고 왜 그들이 통역사라고 불리는가는 실제로 통역사이기 때문입니다. 스크립트를 명시 적으로 실행하지 않는 경우에도 (그리고 스크립트는 실제로 작성하는 명령 텍스트 파일이므로 다시 입력하지 않고도 동일한 명령을 반복해서 실행할 수 있습니다). 예를 들어, 겸손한 'ls'명령을 사용하십시오. 실행하면 파일 목록이 반환됩니다. 그러나 그것이 실행되는 방법은 귀하의 질문에 더 중요합니다. 단순한 명령으로 보이는 것을 실행하더라도 실제로는 명령 줄 인터프리터의 컨텍스트 내에서 실행됩니다. 즉, 더 큰 프로그램의 일부인 문장처럼 실행됩니다. 마치 실제로 쉘 스크립트 파일에 있지 않고 쉘 스크립트 스크립트 파일에있는 것처럼 실행됩니다. 익명 쉘 스크립트 파일

커맨드 라인에서 실행하는 것은 공통점이 있습니다 ( 'ls'와 같은 단일 명령이든 명령과 반복자와 조건문으로 가득한 스크립트 파일이든 상관 없음). 모두 커맨드 라인 인터프리터에 의해 처리됩니다. Bash, C-Shell, K-Shell (AIX btw의 기본값)입니다.

무슨 뜻인지 보려면 'test'디렉토리를 만드십시오 :

mkdir test

그것을 입력하고 다음 명령을 실행하십시오

grep hello * 

'이러한 파일이나 디렉토리 없음'과 같은 일종의 응답을 얻을 수 있습니다. 이제 명령을 입력하십시오

echo $?

($?라고 말하면 암호 컴퓨터에서 찾은 것을 말하십시오.) 숫자가 2를 반환한다는 것을 알 수 있습니다. 그것은 '그러한 파일이나 디렉토리가 없음'을 의미하는 grep의 리턴 코드입니다. 이제 다음을 실행하십시오.

echo hello > hello.txt
grep hello *
echo $?

초기 grep 명령에서 'hello.txt'파일이 반환되고 이제 'echo $?'가 표시됩니다. 실제로 무언가를 찾은 숫자 '0'을 반환합니다.

이러한 겉보기 명령이 하나라도 실행 되더라도 명령 줄 인터프리터는 더 큰 프로그램의 일부인 것처럼 작동하고 반환 값을 추적합니다. 따라서 grep 명령 끝에서 *를 잊어 버리면 반환되지 않습니다. 명령문이 불완전하다는 것을 알고 더 많은 입력을 기대합니다. 결국 명령 줄에서 작성하고 실행하는 것이 합법적 인 루프의 결과를 grep하도록 요청할 수 있습니다.

결론은 껍질이 껍질이고 통역사 (사용하는 이름, 'Bash', k-shell 등)가 다릅니다. 그러나 주어진 순간에 그들은 완전히 함께 묶여 있기 때문에 종종 상호 교환 가능하게 사용됩니다.


2

Shell은 텍스트 기반 사용자 인터페이스입니다.

Bash는 쉘 유형입니다.


2
"테스트 기반 사용자 인터페이스"란 무엇입니까? 또한 답변을 약간 확장하는 것이 좋습니다. 다른 답변에서 볼 수 있듯이 항상 더 많은 컨텍스트를 제공하는 데 도움이됩니다.
slhck

죄송합니다. 텍스트 기반 사용자 인터페이스. 내가 어떻게 설명하겠습니까? 쉘은 운영 체제 커널과 상호 작용하는 명령 줄 방식입니다. 쉘은 당신의 명령을 해석하고 당신의 명령과 관련된 필요한 작업을 수행하는 기계로 전달합니다. 500 페이지 매뉴얼이 없으면이 모호한 질문에 대해 효과적으로 설명하기가 어렵습니다. 대답의 노력은 질문의 노력에 적합합니다. 이 질문은 사과부터 오렌지까지입니다.
HayekSplosives

당신이 질문에 노력이 있다고 생각한다고해서 자동적으로 답을해서는 안된다는 의미는 아닙니다. 당신의 대답은 다른 것에 비해 약간의 세부 사항이 부족합니다. 물론 그것을 추가하는 것은 당신에게 달려 있습니다.
slhck

개인적 책임에 대한 시정과 교훈에 감사드립니다. 기꺼이 노력하지 않는 사람들을 보호 해 주셔서 감사합니다. 나는 포스터를 얼마나 빚 졌는지 잊고있다.
HayekSplosives


1

bash 존재하는 많은 껍질 중 하나입니다.

모든 껍질에는 유사점과 차이점이 있습니다. 예를 들어 bash로 작성된 스크립트는 다른 쉘 (예 : zsh ) 과 완전히 또는 대부분 호환 될 수 있습니다 .

bash매우 널리 퍼져 있다는 사실로 인해 스크립트와 호환되는 경우가 종종 있습니다.

책을 구입하려는 경우 사용하려는 껍질을 위해 특별히 작성된 책을 구입하십시오. 돈을 보내기 전에 차이점을 읽어 보는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.