[CS] 셸

최민길(Gale)·2023년 8월 6일
1

CS 탐구

목록 보기
8/13

안녕하세요 오늘은 셸에 대해서 알아보도록 하겠습니다.

셸이란 사용자가 커널의 서비스 기능을 이용할 수 있도록 하기 위한 통로 또는 사용자 인터페이스를 의미합니다. 사용자로부터 명령어를 입력받고 해석하여 내장 및 외정 명령어를 처리하는 대화형 사용자 인터페이스로 커널이 제공하는 시스템 콜을 통해 구현되어 파일 관리, 프로세스 관리 등 커널의 기능을 사용할 수 있게 합니다.

셸은 기준에 따라 다양하게 나눌 수 있습니다.

먼저 로그인 유무에 따른 셸의 분류입니다. 로그인 셸은 사용자가 유저 아이디와 패스워드를 입력하여 셸에 진입하는 방식으로 사용되는 셸입니다. putty에서 ssh로 접속하거나 X 윈도우에서 로그인할 때 사용됩니다. 비로그인 셸은 로그인 없이 셸을 실행하는 방식으로 사용되는 셸입니다. 셸에 로그인한 상태에서 bash를 사용하여 셸을 실행하는 방식 등이 있습니다.

다음으로 입력 여부에 따른 셸의 분류입니다. 인터랙티브 셸은 사용자가 대화형으로 셸을 통해 명령을 입력하고 결과를 받을 수 있는 상태의 셸입니다. 반면 비인터랙티브 셸은 셸 스크립트에서 실행되는 셸입니다. #!/bin/bash를 입력했을 때 #! 다음에 나오는 경로의 셸을 실행합니다.

셸에서는 입출력 및 에러의 기본 장치를 변경할 수 있습니다. 표준 입력은 0으로 표시하며 프로그램에게 데이터를 전달할 때 사용하는 기본 장치를 의미합니다. 표준 출력은 1로 표시하며 프로그램의 출력을 표시할 때 사용하는 기본 장치를 의미합니다. 표준 에러는 2로 표시하며 프로그램에서 오류가 발생했을 때 출력할 기본 장치를 의미합니다.

표준 입출력은 리다이렉션을 통해 지정된 값으로 변경할 수 있습니다. > 를 사용하면 프로그램의 출력을 표준 출력에서 지정한 출력으로 변경하며, 출력에 관심이 없을 경우 null로 보내 셸에 출력값이 나타나지 않게 할 수 있습니다. >>의 경우 프로그램의 출력을 표준 출력에서 지정한 출력으로 변경하고 출력 내용을 지정한 출력에 추가합니다. 예를 들어 .log 파일로 지정 출력을 변경한 후 >> 를 이용하여 리다이렉트하였을 때 .log 파일에 출력값이 저장됩니다. < 의 경우 프로그램의 입력을 표준 입력에서 지정한 입력으로 변경하며, << 의 경우 프로그램의 입력을 여러 줄 받을 때 사용하며 지정한 문자열을 입력하면 입력이 종료됩니다.

셸 프로그래밍이란 특정 목적을 달성하기 위한 셸 스크립트를 작성하는 활동을 의미합니다. 셸 스크립트란 셸에서 제공하는 여러 명령어를 나열한 파일로, 여러 명령어를 일일이 입력할 필요 없이 한번에 일련의 명령어를 실행합니다. 셸 스크립트는 인터프리터가 명령어 해석을 바로바로 하기 때문에 디버깅이 쉽다는 장점이 있으며, 별도의 프로세스로 실행하기 위해선 실행 권한을 주고 파일의 경로 디렉토리를 붙여 실행합니다.

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글