1. ホーム
  2. git

[解決済み] Ubuntu on Windows (WSL) のBashをVS Codeのターミナルで使用するにはどうすればよいですか?

2023-04-01 23:03:07

質問

他の質問では のようなものをどのように使うかについてです。 Windows サブシステム上で動作する git-bash 端末の代わりに、実際の Ubuntu Linux サブシステム上で動作する bash にアクセスできるようになります。

では、どのようにして VS Code 端末として動作させるのか、特に、機能的な開発環境端末として動作させるにはどうしたらよいのでしょうか。

git-bash とは異なり、WSL の Ubuntu Linux 設定では、WSL と Windows 自体の間のパスの相互作用により、Windows Program Files ディレクトリから NPM を実行しようとしたり (そして失敗したり)、Linux での開発に慣れていない人にとっては必ずしもすぐに明白ではない理由で Compass などのいくつかのパッケージが失敗するなど、残念ながらこれはそれほど簡単なことではありません。VS Codeのための信頼できるWSLターミナル環境を持つための簡単な方法は何でしょうか。 apt-get または npm ?

どのように解決するのですか?

この回答は、VS Code で端末用の WSL を使用する際に、トラブルシューティングに 1~2 時間費やし、一般的な問題のために異なる解決策をゆっくりと見つけることを避けるために、他の人を助けようとしています。特定のパッケージのインストールではなく、その存在に依存するものをインストールする際に依存関係として適切にインストールされない可能性のある一般的なもの、および関連する一般的な設定の修正について説明します。

手順の概要

  • WSL のインストール
  • VS Code (または他の IDE) がターミナルに設定されています。
  • NPM をインストールした & パス修正 を .profile に追加しました (他のツールでも役に立つかもしれません)。
  • build-essential のインストール (make/gcc/etc を使用するすべてのツールで役立ちます)
  • WSL を使用した VS コードタスク
  • その他

スタートアップと要件

VS コード端末の設定

どちらかの CTRL + , キーボードショートカット、または FilePreferences 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 UbuntuのBashターミナルを開発用に機能させる

を使う場合 CTRL + ` を実行してターミナルを開くと、bashのターミナルが表示されるはずです。

bash.exeを初めて実行した場合、Ubuntuのインストールについて尋ねられることがあります。そうしてください。インストールが完了したら、WSL Ubuntuで使用するユーザー名とパスワードを選択します。これらは、現在のWindowsアカウントと一致する必要はありませんし、Windowsアカウントのパスワードの変更に基づいて変更されないことに注意することが重要です。

完了したら、ターミナルに bash コマンド プロンプトが表示されます。

Windowsのgit-bashとは異なり、独立した環境であることに注意してください。に使用することができますが 起動 Windowsのソフトウェアをそれ自身の外で実行するには、適切なUbuntuのパッケージが必要です。

現在、WSL には、期待される、あるいは慣れ親しんだすべてのものが搭載されているわけではなく、デフォルトのプロファイル設定に基づき、Windows でロードしたソフトウェアと競合するものもあります。

アップデートと git

注意 私は、単にこれの単一部分を必要とする人々のために、これらを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 , catsed ...など)を開き ~/.profile

nano ~/.profile

注意 WindowsのツールでLinuxのファイルを編集しないでください。 . (おかげさまで @david-c-rankin さんのコメント の公式リンクに感謝します。)ターミナルでこのためにCLIエディタを使いたくない場合は、GUIを実行する方法についてのリンクをこの投稿の一番下に参照してください。

現在、WSL のデフォルトの bash PATH 変数は

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のインストール時にこれらをインストールしていない場合は、インストールしてください。単純に ビルドエッセンシャルパッケージ を使う方がはるかに簡単です。

Compass のような Ruby FFI に依存するパッケージは、これらがないと失敗することに注意してください。ツールのインストールと実行に問題がある場合、gcc と make がインストールされていることを確認することは、良い出発点となります。

sudo apt-get install -y build-essential

Ubuntuを使ったタスクの実行

VS Code の tasks.json を使ってビルドタスクを実行する場合、デフォルトでは Ubuntu のサブシステムではなく、Windows のサブシステムを使って実行されることに注意してください。 時々 これはあなたが望むことかもしれませんが、WindowsではなくUbuntuにgrunt-cliをインストールしたばかりの場合、おそらくそうではないでしょう。

VS Codeは最近、2017年5月のアップデートで、タスクの動作方法に タスクランナーをターミナルとして設定する . これは、タスクを移行するための最も簡単な方法です。

を設定するだけです。

"runner": "terminal",

の中に tasks.json を追加すれば完了です(WSL Ubuntuに今実行しようとしている適切なツールがすべてインストールされていると仮定して)。

これは 非常に ポータブルで、理想的には WSL があるシステムとないシステム、あるいは他の OS への変更が不要であり、私が推奨する方法です。

現時点では、このメソッドは別の TERMINAL タブのインスタンス (ドロップダウンからアクセス) を生成します。まだ適切なウォッチャーを設定することができますが、それはもはや、タブに座っていないことを意味します。 OUTPUT タブをクリックします。

古い方法は、WSL Ubunutu Bashシェルを起動することができ、それを OUTPUT に表示させることができ、-c 引数で bash.exe を呼び出すか、シェルスクリプトを使用する必要があります。これは、残念ながら、意味的なものではありません。 bash をコマンドにして、その代わりに実行したいものを引数として渡しているからです。これはまた、他のシステムへの迅速な移植性がないことを意味します。

ターミナル自体には、以前にVS Codeに与えたのと同じ場所を使うことができます。 C:\\WINDOWS\\Sysnative\\bash.exe の値として command

の最初の要素を設定します。 args という配列の最初の要素を -c で、2番目は実行したいコマンド( この回答の後半にあるクレジット ).

あるいは、代わりに シェルスクリプトを実行することもできます。 .

その他の役立つ情報

次のことをしたい WSL BashのコマンドラインからWindowsでVSCodeを起動したい。 ?

を持ちたい。 のグラフィカルインターフェースが欲しいですか? ? (これにより、ファイル用のLinux GUIエディタを使用するようなことができるようになります 内の Windowsの編集ツールを使って編集しないでください。)

ビルドしたい(WSL用にVS Code Tasksを適切に設定するための上記の部分を参照)、そして デバッグを完全にWSL Ubuntu内で行いたい場合 ? (これは gdb を使ってそうする方法を示しています、しかし pipeTransport のコンセプトは他のデバッガでも使えます) (謝辞は この回答 のおかげですが、その前のものはまた、有用であることを証明することができるローカルループバックを使用する方法を提供しています)