🍮
Windowsの環境変数のパスをつなげるときに気をつけること
環境
Windows11
起こったこと
Windowsのシステム環境変数のPathが長さ制限で、エラーになってそれ以上パスを追加できなくなりました。
調べると、Path
をPath1
とPath2
分割して、以下のように、繋げればよいと合ったので、そのとおりにやってのですが、Path1
の部分がうまく反映されませんでした。
システム詳細>環境変数のシステム環境変数
コマンドプロンプトで見てみると、以下のようにPath2
は展開されるのですが、Path1
が展開されずそのまま表示されました。
# コマンドプロンプト
> echo %PATH%
%PATH1%;C:\...
生成AIに聞くと「レジストリエディター
を確認して、作成し直したらどう?」などと言われたのでWin + R
で「regedit」を入力して、\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
を確認してみる。以下の図のようになっていた。
レジストリエディタのイメージ
原因と対策
ここでPath1
の種類がREG_EXPAND_SZになっていることに気づきました。
REG_EXPAND_SZが文字列の中に%Path1%
のような展開可能な変数があるときに、選択される種類のようです。確かに、Path1
には%System%
のようなパスがありました。
そこで、Path1
の中の展開可能な変数(%...%
)のようなものをすべて、Path
の中に入れてみました。
するとPath1
の種類がREG_SZになり、echo %PATH%
でPath
の中身を見てみても、うまく展開されました。
まとめ
展開される変数(%...%
)の中にさらに展開される変数(%...%
)がある場合は注意しないといけないと思いました。
Discussion