> 환경 및 유틸리티 > sh

sh: 셸 스크립트 실행 및 명령 해석

`sh`는 Bourne 셸 호환 명령 해석기입니다. 스크립트를 실행하거나 대화형으로 명령을 입력받아 처리하는 데 사용됩니다. 대부분의 리눅스 시스템에서 `/bin/sh`는 `bash`나 `dash`와 같은 다른 셸로의 심볼릭 링크이며, POSIX 표준을 따르는 스크립트 실행 환경을 제공합니다.

개요

`sh`는 유닉스 및 리눅스 시스템의 기본 셸 중 하나로, 스크립트 실행 및 대화형 명령 처리에 사용됩니다. POSIX 표준을 엄격하게 따르므로, `sh`로 작성된 스크립트는 다양한 시스템에서 높은 호환성을 유지하는 데 유리합니다.

주요 특징

  • POSIX 호환성: 표준 셸 스크립트 작성을 위한 기반 제공
  • 스크립트 실행: 파일에 저장된 명령 시퀀스를 실행
  • 대화형 명령 해석: 사용자로부터 직접 명령을 입력받아 처리
  • 시스템 기본 제공: 대부분의 유닉스/리눅스 시스템에 기본 탑재

주요 옵션

`sh`는 스크립트 실행 방식이나 디버깅에 영향을 미치는 다양한 옵션을 제공합니다.

스크립트 실행 및 디버깅

생성된 명령어:

명령어를 조합해 보세요.

설명:

`sh` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

스크립트 파일 실행

sh my_script.sh

지정된 셸 스크립트 파일을 `sh`를 사용하여 실행합니다.

명령 문자열 직접 실행

sh -c "echo 'Hello from sh!' && ls -l"

`-c` 옵션을 사용하여 따옴표로 묶인 명령 문자열을 `sh`로 실행합니다.

디버깅 모드로 스크립트 실행

sh -x debug_script.sh

`-x` 옵션을 사용하여 스크립트 실행 과정을 추적하며 디버깅합니다.

표준 입력에서 명령 실행

echo "ls -a" | sh

파이프를 통해 전달된 명령을 `sh`로 실행합니다.

오류 발생 시 즉시 종료

sh -e error_prone_script.sh

스크립트 내에서 오류가 발생하면 즉시 종료되도록 합니다.

팁 & 주의사항

`sh`는 강력한 도구이지만, 다른 셸과의 차이점을 이해하는 것이 중요합니다.

스크립트 작성 시

  • 스크립트 첫 줄에 `#!/bin/sh`를 사용하여 해당 스크립트가 `sh`로 실행되도록 명시하는 것이 좋습니다.
  • `bash`나 `zsh`와 같은 다른 셸의 확장 기능(예: 배열, 고급 패턴 매칭, `[[ ... ]]` 조건문)은 `sh`에서 작동하지 않을 수 있으므로, POSIX 호환 문법만 사용해야 합니다.
  • 디버깅 시 `-x` 옵션은 스크립트의 흐름을 파악하고 변수 값을 확인하는 데 매우 유용합니다.

호환성

대부분의 리눅스 배포판에서 `/bin/sh`는 `dash` (데비안/우분투 계열) 또는 `bash` (레드햇/페도라 계열)로의 심볼릭 링크입니다. 따라서 `sh` 스크립트는 해당 링크된 셸의 POSIX 호환 모드에서 실행됩니다. 이는 `bash` 스크립트와는 다른 동작을 보일 수 있음을 의미합니다.


동일 카테고리 명령어