BusyBox for Windows
BusyBox for Windows (BusyBox-w32) は Busybox の Windows 移植版です。トップページを見ると、どうやら 2021 年の 10 月頃に BusyBox-w32 から BusyBox for Windows に名前が変わっているような気がします。確かにもう 32 ビットの時代ではないですからね……。でも GitHub は busybox-w32 のようですが。ちなみに 64ビット版バイナリもあります。
これの何がすごいのか?
- インストールは実行ファイル一つをコピーするだけ。環境を汚しません。
- ash 系のシェルを改良していくつかの bash の機能が追加されたシェルが含まれています。
- シェルスクリプトでよく使うコマンド(
sed
やawk
等)の多くが含まれています。
最新のプレリリース版(busybox-w32-PRE-4727-g182e489d9.exe)に含まれているコマンド
[, [[, ar, arch, ascii, ash, awk, base32, base64, basename, bash, bc, bunzip2, busybox, bzcat, bzip2, cal, cat, chattr, chmod, cksum, clear, cmp, comm, cp, cpio, crc32, cut, date, dc, dd, df, diff, dirname, dos2unix, dpkg, dpkg-deb, du, echo, ed, egrep, env, expand, expr, factor, false, fgrep, find, fold, free, fsync, ftpget, ftpput, getopt, grep, groups, gunzip, gzip, hd, head, hexdump, httpd, iconv, id, inotifyd, install, ipcalc, jn, kill, killall, less, link, ln, logname, ls, lsattr, lzcat, lzma, lzop, lzopcat, make, man, md5sum, mkdir, mktemp, mv, nc, nl, nproc, od, paste, patch, pgrep, pidof, pipe_progress, pkill, printenv, printf, ps, pwd, readlink, realpath, reset, rev, rm, rmdir, rpm, rpm2cpio, sed, seq, sh, sha1sum, sha256sum, sha3sum, sha512sum, shred, shuf, sleep, sort, split, ssl_client, stat, strings, su, sum, sync, tac, tail, tar, tee, test, time, timeout, touch, tr, true, truncate, ts, tsort, ttysize, uname, uncompress, unexpand, uniq, unix2dos, unlink, unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, vi, watch, wc, wget, which, whoami, whois, xargs, xxd, xz, xzcat, yes, zcat
Windows でシェルスクリプトを動かすには WSL の他に Cygwin や msys が Git for Windows があるのですが、それらはどうしてもインストール作業が必要になってしまいます。BusyBox-w32 は Windows ネイティブのバイナリファイル一つだけなので、シェルスクリプトとともに配布するだけでユーザーの環境を汚さず動作します。
シェルスクリプトというのはシェルがあるだけでは使い物になりません。シェルスクリプトから多くのコマンドを呼び出すからです。そのためシェルを Windows に移植するだけではシェルスクリプトは動くようにならないという問題があります。Busybox は元のプロジェクトから組み込み環境向けに一つのバイナリに基本的なコマンドを全て組み込んでいるものなので、それを Windows に移植したというのは、シェルだけではなく多くのコマンドも移植したということを意味しています。
busybox.exe
一つあるだけで基本的なコマンドを使用するシェルスクリプトが Windows 上で動くようになります。パッケージ管理ツールはない(実際には BusyBox 版 の dpkg
コマンドや rpm
コマンドが移植されているようですが使えるのかよくわからない)ので、基本的ではないコマンドは含まれていませんが、有名なプログラムは Windows ネイティブで移植されていることが多いと思います。したがって必要なコマンドの Windows 版をインストールすれば、そのようなコマンドを使うシェルスクリプトも動作するようになります。
シェルスクリプトを使いたいけど WSL などをインストール出来ないから使えないといって、仕方なくバッチファイルや PowerShell を使わなければいけないなんてことはありません。シェルスクリプトで書けば Windows 上でも動かすことが出来ます。