[解決済み] Ubuntu on Windows (WSL) のBashをVS Codeのターミナルで使用するにはどうすればよいですか?
質問
他の質問では のようなものをどのように使うかについてです。 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 コードタスク
- その他
スタートアップと要件
- 以下の条件を満たす必要があります。 WSLがインストールされていること . (つまり 64ビット Windows 10、適切な更新プログラム付き) 次の手順に従ってください。 インストール ガイド に従ってください。この際、何度か再起動が必要です。
VS コード端末の設定
どちらかの
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 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
,
cat
と
sed
...など)を開き
~/.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
のコンセプトは他のデバッガでも使えます) (謝辞は
この回答
のおかげですが、その前のものはまた、有用であることを証明することができるローカルループバックを使用する方法を提供しています)
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] git に自分の好きなエディタを使わせてコミットするにはどうしたらいいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み】Windows 7 x64でGit Bashの動作が極端に遅くなる件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
git commit to GitHub エラー、プロンプト ! [リモート拒否] master -> master (pre-receive hook declined) エラー: 失敗しました。
-
git pull エラー: .git/FETCH_HEAD を開けない: パーミッションが拒否されました。
-
致命的 リモートレフマスターが見つからない
-
git pushで "Updates were rejected because your current branch is behind "というエラーが報告される。
-
GitのPlease enter a commit messageで、このマージが必要な理由を説明してください。
-
[解決済み] Visual Studio Codeの統合ターミナルからWindowsのBashを使用するにはどうすればよいですか?
-
Gitのコミットでfatal: unable to auto-detect email addressのエラーが報告される。
-
[解決済み] フォルダからサブモジュールのリポジトリを作成し、そのgitコミット履歴を保持する
-
[解決済み] 現在のブランチにあるファイルをメインブランチにある同じファイルに上書きしますか?
-
[解決済み] SourceTreeを使用して、ビットバケット上にレポを作成せずに、ローカルレポをビットバケットにプッシュするにはどうすればよいですか?