Linux 쉘 (Shell)

ohyujeong·2023년 12월 11일
0

linux

목록 보기
5/9

쉘(Shell)

출처 : https://www.linkedin.com/pulse/ls-l-shell-alex-allen/

쉘은 키보드 입력으로 명령을 받아 운영체제에 전달하여 실행하는 프로그램이다. 다시 말해 쉘은 사용자에게 운영체제의 서비스를 사용할 수 있는 인터페이스를 제공한다. 다음과 같은 특징들이 있다.

  • Linux 시스템에서는 대부분 bash (Bourne Again SHell)가 쉘 프로그램으로 동작한다.
    - 다른 셸 프로그램으로는 ksh, tcsh, zsh 가 있다.
  • 사람이 읽을 수 있는 명령어를 Kernel이 처리 가능하도록 변환하는 Command language interpreter이다.
  • 사용자가 로그인하거나 터미널(Terminal) 실행 시 시작된다.

터미널(Terminal)

사용자가 쉘에 접근할 수 있도록 인터페이스를 제공해주는 프로그램으로, CLI(Command Line Interface)라고도 불린다. 사용자는 명령을 입력하고 텍스트 기반 인터페이스에서 입력한 명령의 출력을 볼 수 있다. 일반적인 운영체제를 사용중이라면 직접적으로 쉘에 접근한게 아니라 터미널을 통해서 쉘에 접근하고 있을 것이다.

터미널 쉘 확인

다음 명령어들을 사용하여 현재 터미널에서 사용하고 있는 쉘을 확인할 수 있다.

echo $0

echo 명령어는 명령어 뒤에 사용자가 입력한 문자열을 출력한다. 따라서 $0 변수의 값을 출력하게 된다. $0 변수는 특수 변수로, 쉘 프로세스가 시작될 때 전달된 쉘 프로그램의 실행파일 이름이다.

쉘의 종류

Linux 배포판마다 여러 종류의 쉘이 제공된다. 그 중 가장 기본적으로 사용되는 것은 bash(Bourne Again Shell) 쉘이다.
빨간색 박스로 표시한 부분을 프롬프트 라고 하는데 bash 쉘에서는 일반 사용자일 경우 기본 프롬프트가 $ 이다. root 사용자로 전환하면 # 로 프롬프트가 변경된다.

다음은 주요 쉘들과 그 특징이다.

쉘 이름실행 명령어설명
Bourne Shellsh유닉스 초기부터 사용되어 온 쉘로, 대부분의 유닉스 계열 운영체제에서 지원한다.
C Shellcsh쉘 스크립트 작성 형식이 C언어 구문과 비슷한 특징이 있다. Bourne Shell의 기능을 확장했다.
TC ShelltcshC Shell을 개선한 확장 버전으로 명령 행 완성/편집 기능이 추가되었다.
Korn ShellkshBourne Shell을 호환성을 유지하면서 확장하고, C Shell 의 기능을 추가했다.
Bourn Again ShellbashBourne Shell을 토대로 개발하였고 리눅스에서 가장 많이 사용되는 쉘이다. C Shell과 Korn Shell의 유용한 기능들을 가지고 있다.
Z ShellzshBourne Again Shell, Korn Shell, TC Shell의 일부 기능을 포함하고, 수많은 개선 사항이 갖추어진 쉘이다.

터미널에서 쉘 변경

쉘 실행 명령어를 터미널에 입력해 터미널에서 사용하는 쉘을 변경할 수 있다. 다음과 같이 위 테이블에 있는 쉘 순서대로 쉘 명령어를 입력하여 변경해보았다. 이와 같이 터미널에서 변경하는 방법도 있지만 터미널 default 쉘을 변경하고 싶다면 Mac 기준 터미널의 환경설정에서 쉘을 지정해주어야 한다.

iTerm 사용시 터미널 쉘 변경

환경설정에서 Profiles 탭 - Command 섹션에서 기본적으로 Login Shell 이라고 되어있는 것을 Command 로 변경 후, 사용하고자 하는 쉘의 절대 경로를 입력한다.

쉘 스크립팅(Shell scripting)

쉘 스크립팅은 CLI 환경에서 명령을 생성하고 실행하는 프로세스이다. 스크립팅 언어를 사용하여 텍스트파일에 작성하고 실행한다. 작업을 자동화하반복적인 작업을 효율적으로 수행하는 것을 목적으로 한다. 다음과 같은 특징을 가진다.

  • 사용자가 직접 자신의 상황에 맞는 도구를 생성할 수 있다.
  • 쉘 스크립팅 언어를 지원하는 모든 시스템에서 실행될 수 있어 이식성이 좋다.
  • 복잡한 명령 처리에는 한계가 있을 수 있다.
  • 디버깅이 어려울 수 있다.
  • .sh 확장자를 가진다.

쉘 스크립트 예시

현재 디렉토리 내의 모든 파일, 디렉토리를 출력하는 쉘 스크립트 예시이다. 첫째 줄에 스크립트를 실행하기 위한 프로그램을 지정한다.

#!/bin/bash

# 현재 디렉토리 내의 파일과 디렉토리를 출력
for file in *
do
  echo $file
done

#!/bin/bash의 의미

쉘 스크립트를 작성 시 가장 첫 줄에 #!/bin/bash 를 작성하는데, 이는 bash 쉘을 사용하겠다고 명시하는것이다.
#! (shebang, '셔뱅'이라고 읽는다) 은 매직넘버(magic number)로, 이 스크립트를 실행시켜줄 프로그램의 경로를 지정한다.

쉘 스크립트 실행

앞서 예시로 작성한 스크립트를 test_script.sh 파일로 저장했다. 쉘 스크립트 실행을 위해서는 다음과 같이 명령어를 입력하여 실행할 수 있다.

sh <실행할 스크립트 파일경로>

쉘 스크립트가 실행되고 출력된 현재 디렉토리 내의 파일과 디렉토리를 확인할 수 있다.


참고

쉘과 쉘 스크립팅
https://www.geeksforgeeks.org/introduction-linux-shell-shell-scripting/
https://unstop.com/blog/linux-shell
https://soft.plusblog.co.kr/27
쉘 커맨드
https://wikidocs.net/211933
쉘 스크립팅
https://blog.gaerae.com/2015/10/what-is-the-preferred-bash-shebang.html

profile
거친 돌이 다듬어져 조각이 되듯

0개의 댓글