Rust製の組み込み可能なJavaScriptエンジン。ECMAScript仕様を幅広くサポートするlexer、parser、interpreterを提供します。
mvdan/sh
POSIX、Bash、Zsh、mkshのシェルスクリプトを解析・整形・実行できるGoライブラリとshfmt CLI。
- スター
- 9,183
- フォーク
- 464
- 未解決の Issue
- 78
- 最終コミット
- 4 日前
これは何?
mvdan/shは、純粋なGoで実装されたシェルパーサー、フォーマッター、インタープリターです。POSIX Shell、Bash、Zsh、mkshの構文に対応し、スクリプトを構文木に変換して、プログラムから調査・書き換えできます。
プロジェクトには、シェルスクリプトに一貫したスタイルを適用し、ファイルを直接書き換えることもできるコマンドラインフォーマッターshfmtが含まれています。多くのLinuxディストリビューション、Homebrew、Scoop、Docker、PyPI向けのパッケージが提供されており、VS Code、Emacs、Vimなどのエディタープラグインからも利用できます。
整形機能に加え、shellパッケージはコマンドラインの分割、変数やチルダの展開、globマッチングのヘルパーを提供します。interpパッケージでは、Windowsを含め、システムシェルを使わずにGo上でスクリプトを実行できます。サブシェルは実際のプロセスではなく、goroutineで実装されています。
主な機能
- 01POSIX、Bash、Zsh、mkshのスクリプトを構文木に解析する。
- 02shfmt CLIでシェルスクリプトを整形し、ファイルを直接書き換えることもできる。
- 03Windowsを含め、システムシェルを使わずにGo上でスクリプトを実行する。
- 04コマンドラインの分割、クォート、変数展開、globマッチングのヘルパーを提供する。
- 05Dockerイメージと、さまざまなOS向けのパッケージを提供する。
ユースケース
- 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に保存し、任意でエンドツーエンド暗号化してマシン間で同期できる、シェル履歴の置き換えツールです。