この回答は、VS Codeの端末にWSLを使用するときに、他の人がトラブルシューティングに1〜2時間費やしたり、一般的な問題のさまざまな解決策をゆっくり見つけたりしないようにすることを目的としています。特定のパッケージのインストールについては説明していませんが、それらの存在に依存するものをインストールするときに依存関係として適切にインストールされない可能性のある一般的なパッケージ、および関連する一般的な設定の修正について説明します。
手順の概要
- WSLがインストールされています
- 端末用に構成されたVSCode(または他のIDE)
- NPMがインストールされ、.profileにパスが修正されました(他のツールで役立つ場合があります)
- build-essentialがインストールされています(make / gcc / etcを使用するすべてのツールに役立ちます)
- WSLを使用したVSコードタスク
- エクストラ
はじめにと要件
VSCodeターミナル構成
どちらのCTRL+の,キーボードショートカット、またはFile
→ Preferences
→Settings
編集ウィンドウの右上で、ユーザー設定またはワークスペース設定のいずれかの正しいコンテキストで作業していることを確認します。
設定の検索バーに、terminal.integrated.shell.windows
(または十分な長さになるものを)入力します。
実際の設定ファイルで設定を見つけて使用しEdit
(マウスを線の上に置くと、左側に表示されます。マウスのないタッチスクリーンでは、線の左側をタップするだけで済みます)、を選択します。Replace in Settings
右側のペインで、変更したjsonファイルに作成されたエントリを変更します。前の設定を次のように置き換えます。
"C:\\WINDOWS\\Sysnative\\bash.exe"
その他のIDE:IntelliJ
[設定] / [ツール] / [ターミナル]を開き、[シェルパス]フィールドをに設定します "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
WSL UbuntuBashターミナルを開発者向けに機能させる
CTRL+`を使用してターミナルを開くと、bashターミナルができているはずです。
bash.exeを初めて実行する場合は、Ubuntuのインストールについて尋ねられることがあります。そうする。インストールが完了したら、WSLUbuntuで使用するユーザー名とパスワードを選択します。これらは現在のWindowsアカウントと一致している必要はありません。また、Windowsアカウントのパスワードの変更に基づいて変更されないことに注意することが重要です。
完了すると、ターミナルにbashコマンドプロンプトが表示されます。
Windowsのgit-bashとは異なり、これは別の環境であることに注意してください。それ自体の外部でWindowsソフトウェアを起動するために使用できますが、実際のターミナル内で実行するには適切なUbuntuパッケージが必要です。
現在、WSLには、期待する、または慣れているすべてのものがロードされているわけではなく、デフォルトのプロファイル設定に基づいて、Windowsにロードしたソフトウェアと競合するものもあります。
アップデートとgit
注:これを1つだけ必要とする人のために、これらをsudoとして文書化しますが、最初の1つのオプションは、代わりにsudo su
sudoを使用せずに次のコマンドを実行することです。
Ubuntuパッケージが最新であることを確認してください。
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
gitをインストールします:
sudo apt-get install git
Node.jsとNPM
すでにWindowsにNodeまたはNPMがロードされている場合、Ubuntuでそれらを実行すると、パスの問題が原因で問題が発生する可能性があります。したがって、Ubuntuネイティブバージョンをインストールし、代わりにそれらが使用されていることを確認する必要があります。
まず、node.jsをNPMでインストールします。(代替:NVMをインストールし、それを使用してnode.jsをインストールします)
インストール後、npmコマンドの実行はおそらく失敗します。たとえば、次のようにnpm -v
なります。
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
これは、かなり単純なソリューションのパスの問題が原因です。(のようなお気に入りのCLIエディタを使用してnano
、vim
、emacs
、cat
とsed
...等)、あなたを開きます~/.profile
nano ~/.profile
注:Windowsツールを使用してLinuxファイルを編集しようとしないでください。(これを説明する太字の赤いテキストを含む公式リンクに対する@ david-c-rankinのコメントに感謝します)ターミナルでこれにCLIエディターを使用したくない場合は、この投稿の下部にある方法のリンクを参照してください。 GUIを実行します。
現在、WSLのデフォルトのbashPATH変数は
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
これは、最初の2つのバイナリディレクトリの後にWindowsパスを挿入しています。残念ながら、これにより、Windowsがnpmをインストールする前に/ usr / binが使用されることはないため、最後の$ PATHの前に追加します。
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
保存してから、端末をリロードするか、パスファイルを入手してください
source ~/.profile
ビルドエッセンシャル
コンパイルが必要なものを使用している場合、またはmakeを使用している場合は、これらをインストールする必要があることがほぼ保証されています。したがって、node.jsのインストール中にインストールしなかった場合は、インストールしてください。すべてを個別にインストールするよりも、build-essentialパッケージを使用する方がはるかに簡単です。
Ruby FFIに依存するCompassなどのパッケージは、これらがないと失敗することに注意してください。ツールの適切なインストールと実行に問題がある場合は、gccとmakeがインストールされていることを確認することから始めるのがよいでしょう。
sudo apt-get install -y build-essential
Ubuntuを使用したタスクの実行
VS Codeのtasks.jsonを使用してビルドタスクを実行する場合、デフォルトでは、UbuntuではなくWindowsサブシステムを使用して実行されることに注意してください。時には、これはあなたが望むかもしれないが、あなただけのUbuntuのではなく、Windowsの作男-CLIのインストールが完了した場合、それはおそらくありません。
VS Codeは最近、2017年5月にタスクの動作を更新し、タスクランナーをターミナルとして設定できるようにしました。これは、タスクを移行する最も簡単な方法です。
設定するだけ
"runner": "terminal",
でtasks.json
完了しました(実行しようとしている適切なツールがすべてWSL Ubuntuにインストールされていると仮定します)。
これは非常に移植性が高く、理想的にはWSLがあるシステムとないシステム間、または他のOS間で変更を加える必要がなく、私がお勧めする方法です。
現時点では、このメソッドは別のTERMINAL
タブインスタンスを生成します(ドロップダウンからアクセスされます)。適切なウォッチャーを設定することはできますが、それはOUTPUT
タブに座っていないことを意味します。
古いメソッドは、WSL Ubunutu Bashシェルを呼び出して、に表示するOUTPUT
ことができ、-c引数を指定してbash.exeを呼び出すか、シェルスクリプトを使用する必要があります。残念ながら、私たちが作っているので、それは意味論的ではありませんbash
、コマンドを、代わりに引数として実行したいものを渡す。これは、他のシステムへの移植性がそれほど速くないことも意味します。
C:\\WINDOWS\\Sysnative\\bash.exe
の値として、端末自体に以前にVSCodeを指定したのと同じ場所を使用できます。command
args
配列の最初の要素-c
を実行するコマンドとして設定し、2番目の要素を実行するコマンドとして設定します(この回答の後半にクレジットします)。
または、ここに示すように、代わりにシェルスクリプトを実行することもできます。
さらに役立つビット
WSL BashコマンドラインからWindowsでVSCodeを起動したいですか?
持つようにしたいあなたのWSLのUbuntu用のグラフィカルインタフェースを?(これは、ファイルのために使用のようなものLinuxのGUIエディタを行うことができます内のUbuntuシステム自体:ない編集彼らはWindowsの編集ツールを使用して、NPMのセクションにコメント/ノートを参照してください)
ビルドして(WSL用にVS Code Tasksを適切に設定する方法については上記の部分を参照)、完全にWSL Ubuntu内でデバッグしたいですか?(これは、gdbを使用してこれを行う方法を示していますが、このpipeTransport
概念は他のデバッガーでも使用できます)(この回答の功績ですが、前の回答では、ローカルループバックを使用する方法も提供されています)。