Sh와 Bash의 차이점

Fumbani Banda 2023년1월30일
  1. 쉘이란 무엇입니까?
  2. 현재 쉘을 찾는 방법
  3. 사용 가능한 쉘을 찾는 방법
  4. sh 명령 및 사용
  5. Bash와 그 사용법
Sh와 Bash의 차이점

이 튜토리얼은 쉘이 무엇인지, 현재 사용되는 쉘을 알고, 사용 가능한 모든 쉘 목록을 확인하고, shbash의 차이점에 대해 설명합니다.

쉘이란 무엇입니까?

쉘은 명령을 받는 컴퓨터 프로그램입니다. 또한 명령을 해석하고 처리를 위해 운영 체제에 전달합니다. 사용자가 운영 체제와 상호 작용할 수 있도록 사용자와 운영 체제 간의 인터페이스 역할을 합니다.

대부분의 Linux 운영 체제에는 최소한 하나의 셸 프로그램이 함께 제공됩니다. 쉘 프로그램은 Bash, Dash 또는 둘 다입니다.

현재 쉘을 찾는 방법

현재 Linux 시스템에서 사용 중인 쉘을 알기 위해 /etc/passwd 파일을 읽을 수 있습니다. 사용자 계정 정보가 저장되어 있기 때문입니다. 현재 쉘을 알기 위해 아래 명령어를 실행해보자.

grep 명령은 지정된 파일에서 문자열을 검색하는 데 사용됩니다. 아래 명령은 /etc에 있는 passwd 파일에서 사용자 fumba를 검색합니다. grep 명령이 일치하는 항목을 찾으면 결과가 포함된 행을 인쇄합니다.

$ grep fumba /etc/passwd

W는 사용자 fumba의 기본 셸이 bash임을 아래 출력에서 ​​볼 수 있습니다.

fumba:x:1000:1000:,,,:/home/fumba:/bin/bash

사용 가능한 쉘을 찾는 방법

Linux 시스템에서 사용 가능한 모든 쉘은 /etc/shells 파일에 나열됩니다. 아래 cat 명령을 사용하여 /etc/shells 파일의 내용을 표시합니다.

cat /etc/shells

아래 출력은 시스템에서 사용 가능한 모든 셸 목록을 표시합니다.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

sh 명령 및 사용

sh는 Bourne 쉘의 명령 이름입니다. Unix 계열 운영 체제를 위한 표준 명령 언어 인터프리터입니다. 명령줄 문자열, 표준 입력 또는 지정된 파일에서 명령을 실행합니다. sh는 POSIX 표준을 따릅니다.

POSIX(Portable Operating System Interface)는 운영 체제 간의 호환성을 유지하기 위해 IEEE Computer Society에서 지정한 표준 제품군입니다. 이러한 표준은 일단 표준을 따랐다면 여러 운영 체제용 크로스 플랫폼 소프트웨어를 개발하는 데 도움이 됩니다.

대부분의 시스템에는 /bin/sh 파일이 있지만 이는 심볼릭 링크이며 sh를 호출하지 않습니다. Ubuntu에서 /bin/shDash 셸에 대한 심볼릭 링크입니다. 아래 명령을 실행하여 확인할 수 있습니다.

$ file -h /bin/sh

아래 출력은 /bin/shdash에 대한 심볼릭 링크임을 보여줍니다.

/bin/sh: symbolic link to dash

스크립트에 #!/bin/sh를 추가해 보겠습니다.

#!/bin/sh

printf "sh points to dash!\n"

위의 스크립트는 /bin/sh를 인터프리터로 지정합니다. 그러나 /bin/shdash를 가리키므로 dash 셸은 스크립트를 인터프리터로 실행합니다.

Bash와 그 사용법

Bash는 Bourne Again Shell 의미합니다. sh와 마찬가지로 명령 언어 프로세서이자 쉘입니다. 그러나 bash는 sh의 상위 집합입니다. sh의 기능을 지원하며 더 많은 확장 기능과 기능을 제공합니다. ‘Bash’는 Linux 운영 체제의 기본 셸입니다.

초기에 Bash는 POSIX 표준을 준수했지만 시간이 지남에 따라 더 많은 기능과 확장이 추가되면서 POSIX 표준을 따르지 않게 되었습니다. 그러나 bash는 아래와 같이 -posix 플래그를 설정하여 POSIX 모드에서 계속 사용할 수 있습니다.

$ bash --posix

POSIX 표준을 준수하는 bash 스크립트를 작성해 보겠습니다.

#!/bin/bash

set -o posix
printf "we are using bash shell!\n"

bash 인터프리터는 첫 번째 줄 #!/bin/bash에 지정되었으므로 위의 스크립트를 실행합니다.

set 명령은 스크립트에서 옵션을 활성화합니다. 이 경우 bash 셸이 POSIX 모드에서 스크립트를 실행할 수 있습니다.

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub