터미널과 배쉬? [복사]

터미널과 배쉬? [복사]

저는 Mac을 사용하고 있지만 이는 일반적으로 Unix에도 적용된다고 생각합니다.

쉘 스크립팅을 배우고 있는데 뭔가 빠진 것 같습니다. 일반 터미널에 있을 때 for작업을 수행하기 위해 명령과 결합된 루프와 같은 스크립팅 구문을 사용할 수 있습니다.

하지만... bash쉘 스크립트를 실행하기 위해 인터프리터를 엽니다.

터미널이 이미 쉘 스크립트에 대한 인터프리터가 아니기 때문에 이것이 제가 혼란스러워지는 부분입니다. stdin에 입력하면 스크립트가 작동한다는 사실에서 알 수 있듯이?

보너스 질문: "대화형 세션 시작" 에 따르면 bash와 어떻게 다른가요 ? 직접 입력하면 이런 일이 발생하지 않나요 ? 제 생각에는 애초에 일반 터미널에 있는 것과 별반 다르지 않은 것 같아요...bash -imanbash

답변1

이 사진 속 기계는 (영상)단말기, 더 구체적으로VT100통과디지털 장비 공사.

Wikipedia의 VT100 터미널

수십 년 전, 컴퓨터가 컸을 때는 각 사용자마다 개인용 컴퓨터를 두는 대신 케이블로 메인 컴퓨터에 연결된 디스플레이와 키보드가 있는 가상 장치인 터미널을 가질 수 있었습니다. VT100은 컴퓨터가 아니라 키보드와 모니터일 뿐입니다. 일반적으로 컴퓨터에는 이러한 장치가 여러 개 연결되어 있습니다.

그래서 수십 년 전만 해도 유닉스 컴퓨터는 터미널(물리적 장치)을 통해 접근했다. 개인용 컴퓨터의 출현으로 그래픽 사용자 인터페이스가 보편화되면서 이와 같은 터미널 장치를 통해 Unix 명령줄에 액세스할 수 있는 방법이 있었습니다.터미널 에뮬레이터. 이것단말기OS의 프로그램Terminal 런타임은 완전히 똑같아 보이고 데이터는 이렇게 터미널 장치에 표시됩니다. 프로그램의 경우,터미널 에뮬레이터의 창은 이러한 장치 중 하나처럼 작동합니다. 대부분의 명령줄 프로그램은 차이점을 인식하지 못합니다(정품 VT100을 MBP에 연결하기 어려울 수도 있음).


비디오 터미널은 키보드와 프린터가 있는 하드 카피 터미널이라는 장치의 후속 제품입니다. 프로그램의 모든 출력은 종이에 인쇄됩니다. 비디오 터미널이 이러한 장치에 비해 크게 개선되었다고 상상할 수 있습니다. 하드 카피 터미널 예, TeleType Model 33 ASR:

텔레타입 모델 33 ASR

이 장치는 다음과 같이 알려져 있습니다.텔레타이프라이터,텔레타이프라이터, 또는단말기약어 및단말기1970년대 초반부터 이러한 장치에 대한 인터페이스나 터미널 에뮬레이터는 여전히 호출되었습니다.단말기, 그리고 많은 프로그래밍 언어에서 터미널 창에 표시할 텍스트를 출력하는 것을 여전히 "인쇄"라고 합니다. 원래 이것은 비유가 아니라 사실입니다.


쉘은 항상 주변에 있었습니다. 유닉스 초창기부터 중앙 컴퓨터에 액세스하기 위해 로그인 이름과 비밀번호를 터미널에 입력한 후 실행하는 프로그램입니다. 첫 번째 쉘 프로그램은톰슨 쉘( sh) 1971년부터본 쉘, 또한 ~으로 알려진 sh. 초기 설계 의도는 쉽게 업데이트할 수 있는 또 다른 프로그램이고 사용자가 기본 셸 대신 자신의 프로그램을 실행할 수 있도록 하는 것이었습니다.

이후 GNU 프로젝트는 처음부터 개선된 쉘을 제작했습니다 bash.본 아이덴티티 쉘, Apple은 MacOS X와 ​​함께 제공하기로 결정했습니다.


1970년대에는 그 차이가 분명했습니다. 터미널은 크림색 플라스틱 케이스로 포장된 30kg의 견고한 주철 프레임처럼 보였고 그 앞에 유리 디스플레이와 키보드가 있거나 심지어 키보드도 있었습니다. -전용 장치 및 프린터. 반면 쉘은 호스트 컴퓨터에서 실행되고 명령을 해석하는 프로그램입니다.

답변2

터미널을 시작하면 항상 일부 프로그램이 실행되고 있습니다. 이 프로그램은 일반적으로 쉘을 기본값으로 사용합니다. OS X에서 기본 쉘은 Bash입니다. 이 뜻을 합치면bash터미널을 실행하면 터미널 에뮬레이터 창이 실행되는 것을 볼 수 있습니다.(기본적으로).

당신은 할 수기본 쉘 변경원하는 경우 다른 것으로 변경할 수 있지만 OS X에는 bashtcsh. 새 터미널에서 사용자 정의 명령을 실행하도록 선택할 수 있습니다open명령:

open -b com.apple.terminal somecommand

이 경우 쉘아니요여기에서 실행하고 사용자 지정 명령이 종료되면 끝입니다.

bash이미 실행 중인 터미널에서 실행하면 bash다음과 같은 결과가 나타납니다. 하나의 셸이 다른 셸을 실행하고 있습니다. Ctrl-D내부 쉘을 사용하거나 종료할 수 exit있으며 시작한 쉘로 돌아갑니다. 이는 구성 변경 사항을 테스트하거나 환경을 일시적으로 사용자 정의하려는 경우 유용할 수 있습니다. 변경 사항은 내부 셸을 종료할 때 유용합니다. 사라지게 만드세요. 원하는 만큼 깊이 중첩할 수 있습니다. 이렇게 하지 않으면 다른 스크립트를 시작할 필요가 없지만 이와 같은 명령은 bash some-script.sh스크립트를 실행한 다음 종료하므로 종종 유용합니다.


대화형 셸과 비대화형 셸 간의 차이점은 약간 미묘하며 주로 로드되는 구성 파일, 존재하는 잘못된 동작, 별칭 및 유사한 동작의 활성화 여부와 관련이 있습니다. 대략적인 경험 법칙은 대화형 셸이 원하는 설정을 제공하고 비대화형 셸이 독립 실행형 스크립트에 필요한 설정을 제공한다는 것입니다. 모든 차이점은 다음에 명확하게 문서화되어 있습니다.배쉬 참조 매뉴얼, 그리고 또한이 사이트에는 전용 질문이 있습니다.

대부분의 경우에는 신경 쓸 필요가 없습니다. 일반적으로 다른 셸을 시작할 이유가 없으며, 그렇게 할 때 특정 목적을 염두에 두고 무엇을 해야 할지 알고 있습니다.

답변3

bash첫째, 터미널(또는 다른 쉘 인터프리터)이 이미 실행 중이라는 사실을 놓쳤습니다.

귀하의 경우 터미널(보다 정확하게는 터미널 에뮬레이터)은 기본 프로그램에 키 입력을 전달하고 전송된 모든 문자를 표시하는 장치일 뿐입니다. 기본적으로 셸을 실행하지만 텍스트 편집기나 기타 응용 프로그램과 같은 다른 텍스트 응용 프로그램을 실행하는 터미널을 시작하는 것을 금지하는 것은 없습니다.

이미 대화형 세션에 참여하고 있는 경우에는 달리기가 실제로 차이를 가져오지 않습니다 bash.bash -i

관련 정보