ターミナルの起動失敗のトラブルシューティング
まず始めに、Visual Studio Code の統合ターミナルを楽しんでいただく代わりに、このドキュメントを読んでいただくことになってしまい申し訳ありません。VS Code チームは、ターミナルエクスペリエンスを可能な限りシームレスにするために懸命に取り組んでいますが、シェルまたはターミナルの構成に VS Code エディターでは回避できない問題が発生する場合があります。
ターミナルの起動失敗を診断するために何百人もの開発者と協力してきた VS Code チームは、過去に人々の役に立ったアドバイスとトラブルシューティングのヒントをまとめたこの記事を作成しました。シェルまたはターミナルの問題に対する答えがここで見つかり、すぐに作業に戻れることを願っています。
統合ターミナルのユーザーガイド
VS Code 統合ターミナルを初めて使用する場合は、統合ターミナルのユーザーガイドで詳細を確認できます。ここでは、ターミナルの構成方法や、よくある質問への回答を確認できます。
ユーザーガイドが起動失敗の診断に役立たなかった場合は、以下の具体的なトラブルシューティング手順を参照してください。設定の確認やログ記録の有効化などのトラブルシューティング手順は、VS Code をサポートするすべてのプラットフォーム (macOS、Linux、Windows) に適用されます。
注: Windows を使用している場合は、最初に「Windows での一般的な問題」セクションを確認することをお勧めします。
トラブルシューティングの手順
Visual Studio Code で統合ターミナルの起動失敗をトラブルシューティングするには、次の手順に従って問題を診断してください。
-
ユーザー設定を確認します。 起動に影響を与える可能性のある、以下の
terminal.integrated
設定を確認してください。terminal.integrated.defaultProfile.{platform}
- ターミナルが使用する既定のシェルプロファイル。terminal.integrated.profiles.{platform}
- 定義済みのシェルプロファイル。シェルパスと引数を設定します。terminal.integrated.cwd
- シェルプロセスの現在の作業ディレクトリ (cwd)。terminal.integrated.env.{platform}
- シェルプロセスに追加される環境変数。terminal.integrated.inheritEnv
- 新しいシェルが VS Code から環境を継承するかどうか。terminal.integrated.automationProfile.{platform}
- タスクやデバッグなど、自動化関連のターミナル使用のためのシェルプロファイル。terminal.integrated.splitCwd
- 分割ターミナルの開始時の現在の作業ディレクトリを制御します。terminal.integrated.windowsEnableConpty
- Windows ターミナルプロセス通信に ConPTY を使用するかどうか。
設定エディター (ファイル > 設定 > 設定) で設定を確認し、設定 ID で特定の設定を検索できます。
変更した設定に気付いていないかどうかをすばやく確認するには、設定エディターで
@modified
フィルターを使用します。ほとんどの統合ターミナルの設定は、ユーザーの
settings.json
JSON ファイルで直接変更する必要があります。settings.json
は、設定エディターの settings.json で編集 リンクを使用するか、コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から 基本設定: ユーザー設定を開く (JSON) コマンドを使用して開くことができます。 -
シェルを直接テストします。 VS Code の外部から、外部ターミナルまたはコマンドプロンプトから、指定された統合ターミナルシェルを実行してみてください。一部のターミナルの起動失敗は、シェルのインストールが原因である可能性があり、VS Code 固有の問題ではありません。表示される終了コードはシェルからのものであり、特定のシェルと終了コードについてインターネットで検索することで、シェルの問題を診断できる場合があります。
-
最新バージョンの VS Code を使用します。 VS Code の毎月のリリースには、多くの更新と修正が含まれており、統合ターミナルの改善が含まれている場合があります。VS Code のバージョンは、ヘルプ > バージョン情報 (macOS では Code > Visual Studio Code について) で確認できます。最新バージョンの VS Code を見つけるには、VS Code のリリースノートにアクセスしてください。また、シェルの最新バージョンがインストールされているかどうかも確認してください。
-
最新バージョンのシェルを使用します。 シェルがプラットフォームとは別にインストールされている場合は、シェルの最新の利用可能なバージョンをインストールしてみてください。オペレーティングシステムの古いビルドを使用している場合も、同じアドバイスが適用されます。たとえば、古いバージョンの Windows 10 の一部は、VS Code ターミナルとうまく連携しませんでした。
-
トレースログを有効にします。 トレースログを有効にして、ターミナルを起動するときにログをキャプチャできます。ログ記録は、ターミナルプロセス/pty を作成するために使用されるすべての引数が記録されるため、何が問題なのかを明らかにするのに役立ちます。不正なシェル名、引数、または環境変数が原因で、ターミナルが起動しない場合があります。問題が解決しない場合に備えて、このログを保管しておいてください。
追加のトラブルシューティング手順
これらの手順で問題が解決しない場合は、次のことも試してみてください。
- Stack Overflow で質問してください。多くの場合、起動の問題は環境設定に関連しており、VS Code の問題ではありません。
- ターミナルが拡張機能から起動されている場合は、問題レポーター (ヘルプ > 問題の報告) を開いて、[ファイル先] を [拡張機能] に設定して、拡張機能に問題を報告してください。
- VS Code のバグであると思われる場合は、問題レポーター (ヘルプ > 問題の報告) を使用して問題を報告してください。問題レポーターは関連情報を自動入力します。「優れたターミナル問題の作成」を参照して、レポートに他に含めるべきものを確認してください。
- Windows 10 1809 (ビルド 17763) 以前を使用している場合、問題はレガシーの "winpty" バックエンドに関連しています。Windows 1903 (ビルド 18362) にアップグレードすると、Microsoft によって構築された新しい "conpty" バックエンドに移行し、問題が解決する可能性があります。
- ターミナルが管理者としてのみ実行するように設定されていて、VS Code を管理者として起動していない場合、ターミナルを開くことができません。既定のターミナルを変更するか、ターミナル exe のプロパティを編集して、管理者として実行しないようにすることができます。
終了コード
ターミナルの起動失敗通知に表示される終了コードは、シェルプロセスから返されるものであり、VS Code によって生成されたものではありません。ターミナルで使用できるシェルは多数あり、考えられる終了コードは何百もあります。
- 特定のシェルと終了コード (たとえば、"PowerShell 4294901760") についてインターネットで検索してみてください。ターミナルの起動失敗に関連する具体的な提案や既知の問題が見つかる場合があります。
- シェルの問題リポジトリで検索してみてください。たとえば、WSL で問題が発生している場合は、https://github.com/microsoft/WSL/issues でエラーコードをオープンまたは解決済みの問題で検索すると、回避策が見つかる場合があります。
Windows での一般的な問題
互換モードが無効になっていることを確認してください。
Windows 10 にアップグレードすると、一部のアプリで互換モードが自動的にオンになる場合があります。VS Code で互換モードが有効になっている場合、ターミナルは、エミュレーションを有効にするために低レベルの処理を行うため、破損します。互換モードを確認して無効にするには、VS Code 実行可能ファイルを右クリックし、プロパティを選択し、互換性タブの 互換モードでこのプログラムを実行する オプションをオフにします。
ターミナルがコード 1 で終了しました (Windows 10 (既定のシェルとして WSL) の場合)
このエラーは、Windows Subsystem for Linux (WSL) が有効な既定の Linux ディストリビューションで設定されていない場合に発生する可能性があります。
注: 'docker-desktop-data' は有効なディストリビューションではありません。
- PowerShell を開き、
wslconfig.exe /l
と入力して、WSL が正しくインストールされていることを確認し、システム内で現在利用可能な Linux ディストリビューションを一覧表示します。有効なディストリビューションの横に (既定) が表示されていることを確認してください。 - 既定のディストリビューションを変更するには、
wslconfig.exe /setdefault "リストに表示されるディストリビューション名"
と入力します。
ネイティブ例外が発生しました
通常、このエラーは、ウイルス対策ソフトウェアが winpty/conpty コンポーネントがターミナルプロセスを作成するのを傍受してブロックするために発生します。このエラーを回避するには、ウイルス対策スキャンから次のファイルを除外できます。
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty.dll
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty-agent.exe
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\conpty.node
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\conpty_console_list.node
この問題をウイルス対策チームに報告することも、問題を完全に解決するのに役立ちます。
ターミナルがコード 259 で終了します
終了コード 259 は、ターミナルが PowerShell.exe などの新しいプロセスを開始しようとしているときに STILL_ACTIVE
を意味する場合があります。未使用のプログラムとプロセスをマシン上で強制終了してみてください。それらのいずれかがターミナルシェルプロセスをアクティブな状態に保ち、再起動できない場合があります。
マシン上で実行されているウイルス対策ソフトウェアも、ターミナルシェルの起動を妨害する可能性があります。
ターミナルがコード 3221225786 (または類似) で終了します
これは、conhost のプロパティでレガシーコンソールモードが有効になっている場合に発生する可能性があります。これを変更するには、スタートメニューから cmd.exe を開き、タイトルバーを右クリックし、プロパティに移動して、オプションタブの レガシーコンソールを使用する をオフにします。
次のステップ
- 統合ターミナルユーザーガイド - 一般的なターミナルの使用方法と構成について詳しくはこちらをご覧ください。