質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Q&A

解決済

2回答

2068閲覧

VS Code上のターミナルで環境変数PATHに含まれる%SystemRoot%が展開されない

Shunly

総合スコア152

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

0グッド

0クリップ

投稿2023/07/21 02:20

編集2023/07/21 02:40

Windows上のVSCのターミナルで、cmdやwslコマンドをCommand Prompt(ターミナルの+ボタン横のvから選択)から実行すると、以下のようにコマンドが見つからずエラーになりました。(gitコマンドの実行は問題ない。VSC上のPowerShellでも同様のエラーになる)

>cmd 'cmd' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

そこで、先のCommand PromptでPATHを表示すると以下のようになっていました。(PowerShellの$env:pathも同様)

>echo %PATH% %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%SYSTEMROOT%\System32\OpenSSH\;C:\Program Files\Git\cmd;~

これをWindows Terminal上のコマンドプロンプトから同じように実行すると、%SystemRoot%の部分はC:\WINDOWSに展開されており、cmdやwslコマンドは正しく動作します。
そのため、VSCだと環境変数がうまく展開できていないように思えるのですが、%USERPROFILE%は正しく展開できており、%SystemRoot%だけが展開できていないようです。

しかし、VSCのターミナルでSystemRootを表示するとC:\WINDOWSが表示されています。

>echo %SystemRoot% C:\WINDOWS

試しに、SystemRootを展開したパスをPATHに追加したら、案の定正しく動いたのですが、一抹の気持ち悪さがあります。

VSCやWindowsを再起動しても変化ありませんでした。
皆さんのところでは問題ありませんか?何か解決方法はあるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自己解決しました。
VSCの問題ではなく、Windowsの設定の問題でした。

質問の通り、PATHの一部の項目には%SystemRoot%が入っていましたが、システム環境変数のレジストリ(HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)のPathの種類がREG_SZになっていたため、展開されていなかったようです。
この値を作り直してREG_EXPAND_SZにすることで直りました。

ユーザー環境変数のレジストリ(HKCU/Environment)のPathは元からREG_EXPAND_SZになっていたため、その中にある%USERPROFILE%は展開されていたようです。

別のWindows環境で確認したところ、システム環境変数のPathはREG_SZではありましたが、そもそも%SystemRoot%が含まれず、C:\Windowsの状態で入っていました。
特にいじっていないので何の違いでここの値が%SystemRoot%になっているのかよくわかりませんが、同じような問題が出た方はこちらの設定をご確認ください。

投稿2023/07/21 03:43

Shunly

総合スコア152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/07/21 08:03

環境変数変更のGUIで設定すると、% が含まれるかどうかで自動的に REG_SZ と REG_EXPAND_SZ が選択されるようです。 PATHが、REG_SZになっている状態で、環境変数変更のGUI以外の手段で%入りに書き換えたとかでしょうかね。regeditでPATHを書き換える人は居ないと思いますが、何らかソフトのインストーラーはPATHを書き換えたりしますね。
Shunly

2023/07/25 14:08

そんな仕様になっているんですね。問題だったのは少し前に会社から支給されたLenovoのPCで、その辺いじったことはないのですが、プレインストールアプリが結構あるのでそれが悪さしてたのかもしれませんね。 問題になったのがVSCだけだったので、VSCの問題かと勘違いしてしまって解決にだいぶ時間がかかりました、、、
guest

0

どうもあなたが開いているのはコマンドプロンプトじゃないようです。
VSCのターミナルと一口に言ってもいろいろありますんで、どのような手順でそれを開いているのか詳しく説明してみましょう

投稿2023/07/21 02:23

y_waiwai

総合スコア88163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shunly

2023/07/21 02:29

VSCのターミナルにCommand Promptって1つしかないような?一応追記しました。指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問