Rust로 작성된 임베디드 JavaScript 엔진으로, 렉서·파서·인터프리터를 제공하며 ECMAScript 사양을 폭넓게 지원합니다.
mvdan/sh
POSIX, Bash, Zsh, mksh 셸 스크립트를 파싱하고 포맷하며 실행하는 Go 라이브러리와 shfmt CLI입니다.
- 스타
- 9,183
- 포크
- 464
- 열린 이슈
- 78
- 마지막 커밋
- 4일 전
어떤 프로젝트인가요?
mvdan/sh는 순수 Go로 작성된 셸 파서이자 포매터, 인터프리터입니다. POSIX Shell, Bash, Zsh, mksh 문법을 지원하며, 스크립트를 구문 트리로 파싱해 검사하거나 코드로 다시 작성할 수 있습니다.
프로젝트에는 셸 스크립트에 일관된 스타일을 적용하고 파일을 직접 수정할 수도 있는 CLI 포매터 shfmt가 포함되어 있습니다. 다양한 Linux 배포판과 Homebrew, Scoop, Docker, PyPI에서 패키지를 제공합니다. VS Code, Emacs, Vim 등의 에디터 플러그인에서도 shfmt를 사용할 수 있습니다.
포매팅 외에도 shell 패키지는 명령줄 분리, 변수와 물결표 확장, glob 매칭을 위한 헬퍼를 제공합니다. interp 패키지는 Windows를 포함해 시스템 셸 없이 Go에서 스크립트를 실행합니다. 서브셸은 실제 프로세스가 아니라 goroutine으로 구현됩니다.
핵심 기능
- 01POSIX, Bash, Zsh, mksh 스크립트를 구문 트리로 파싱합니다.
- 02shfmt CLI로 셸 스크립트를 포맷하며, 파일을 직접 수정할 수도 있습니다.
- 03Windows를 포함해 시스템 셸 없이 Go에서 스크립트를 실행합니다.
- 04명령줄 분리, 인용 처리, 변수 확장, glob 매칭을 위한 헬퍼를 제공합니다.
- 05Docker 이미지와 다양한 운영체제용 패키지를 제공합니다.
활용 사례
- CI 또는 pre-commit을 통해 팀 저장소의 셸 스크립트 스타일을 일관되게 유지합니다.
- 셸 스크립트를 코드로 분석하거나 다시 작성하는 Go 도구를 개발합니다.
- Go 애플리케이션에 샌드박스형 셸 인터프리터를 내장합니다.
- 기존 shfmt 플러그인을 사용해 에디터에서 셸 코드를 포맷합니다.
빠른 시작
- 1
Go로 shfmt CLI 설치하기
go install mvdan.cc/sh/v3/cmd/shfmt@latest - 2
셸 스크립트를 제자리에서 포맷하기
shfmt -l -w script.sh
사용 전 알아둘 점
- 소스에서 설치하려면 Go 1.26 이상이 필요합니다.
- 서브셸은 goroutine에서 실행되므로 인터프리터에서 실제 PID와 파일 디스크립터를 사용할 수 없습니다.
- `$((`와 `((` 사이의 모호성은 지원하지 않습니다.
포함된 컬렉션
토픽
자주 묻는 질문
- sh은(는) 무엇인가요?
- POSIX, Bash, Zsh, mksh 셸 스크립트를 파싱하고 포맷하며 실행하는 Go 라이브러리와 shfmt CLI입니다. mvdan/sh는 순수 Go로 작성된 셸 파서이자 포매터, 인터프리터입니다. POSIX Shell, Bash, Zsh, mksh 문법을 지원하며, 스크립트를 구문 트리로 파싱해 검사하거나 코드로 다시 작성할 수 있습니다.
- sh은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- sh은(는) BSD-3-Clause 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- sh은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. sh의 마지막 커밋은 2026년 11월 3일입니다.
- sh은(는) 어디에 사용할 수 있나요?
- CI 또는 pre-commit을 통해 팀 저장소의 셸 스크립트 스타일을 일관되게 유지합니다. 셸 스크립트를 코드로 분석하거나 다시 작성하는 Go 도구를 개발합니다. Go 애플리케이션에 샌드박스형 셸 인터프리터를 내장합니다. 기존 shfmt 플러그인을 사용해 에디터에서 셸 코드를 포맷합니다.
- sh는 어떻게 설치하나요?
- Go로 shfmt CLI 설치하기: go install mvdan.cc/sh/v3/cmd/shfmt@latest 셸 스크립트를 제자리에서 포맷하기: shfmt -l -w script.sh
- sh은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/mvdan/sh
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
사용자별·셸별로 여러 Node.js 버전을 설치하고 전환할 수 있는 POSIX 호환 bash 스크립트입니다.
Warp는 내장 코딩 에이전트나 직접 선택한 CLI 에이전트를 지원하는, 터미널 기반의 에이전트형 개발 환경입니다.
명령어와 종료 코드, 실행 시간 등의 맥락을 SQLite에 저장하고, 선택적으로 종단 간 암호화해 여러 머신에서 동기화하는 셸 히스토리 대체 도구입니다.