cmd.exe が環境変数を展開できるのは 8191 文字までです。超えても警告は出ません。PATH から何も解決されなくなり、あらゆるコマンドが
'x' is not recognized as an internal or external command
を返します。これは未インストールに見えて、実際は探索が行われていない状態です。バイナリはディスクにあります。
PowerShell を使っていても cmd が効く理由
対話的に cmd を叩くことはありませんが、通常の作業経路に入り込んでいます。
- npm と pnpm の run-script は cmd を経由する
- Node の
child_processの既定も cmd - その先が呼ぶものも同様
ターミナルでは通るビルドが、パッケージスクリプトの中でだけ失敗するのはこれが原因です。
何が文字数を使っているか
問題になるのは静止状態の PATH ではありません。mise は実行時に管理下の全ツールの bin ディレクトリを前置し、その展開分も同じ 8191 に計上されます。
測定に使っているマシンでの実測値(2026-08-04):
常設 PATH | 2,932 文字 / 60 エントリ |
| mise 展開後 | 7,392 |
| mise の追加分 | +4,460 |
| 残余 | 799 |
常設分は全体の 5 分の 2 で、残りは mise です。そして mise 側はツールを足すたびに伸びます。手で書ける唯一の部分が常設側なので、守る価値があるのはそこだけです。
何が得られるか
常設 PATH から 1 エントリ削るごとに、その文字数が余裕として戻ります。削る価値があるのはそもそも到達しないエントリです。前方の shim が先に応答してしまうディレクトリや、mise 管理へ移った後も残っているツール。長さだけ消費して何も解決しません。
順序規則は path-order.toml が宣言し、windows/doctor.ps1 が実行のたびに順序と残余の両方を検査します。
残りはどれくらいか
799 文字は、ツールディレクトリ 8 つ分程度です。破綻は「パッケージスクリプトが node を見つけられない」という形で現れます。