JavaScript開発をWindowsでBashに移行する

公開: 2022-03-10
簡単な要約↬Bashターミナルが好きだけでなく、PCも好きですか? たぶん、あなたはその新しいSurfaceハードウェアのいくつかに目を向けていたかもしれませんが、端末なしでは切り替えを行うことはできません。 これで、WindowsとBashを使用できます。 この記事では、JavaScript開発用のWindows / Linux開発ボックスをセットアップする方法について詳しく見ていきます。

私はBashターミナルなしでは生きていけない人の一人です。 この唯一の事実により、私はWindowsでフロントエンドの作業を行うことが困難になりました。 私はマイクロソフトで働いており、Macを使用しています。 数年前に新しいSurfaceハードウェアラインが登場するまで、私は気づきませんでした。私はそれらの1つを持っている必要があります。

だから私はそれを手に入れました。 正確には、Windows10を実行しているSurfaceBook2。 現在、この記事の草稿を作成しています。 そして、私の甘い、甘いバッシュプロンプトはどうですか? もちろん、持ってきました。

この記事では、Windows10の新しいテクノロジによってWindowsで完全なLinuxターミナルを実行する方法について詳しく見ていきます。 また、私のすばらしい端末のセットアップ(「私」によって「史上最高」と名付けられた)と、独自のWindows / Linux開発マシンをセットアップする方法についても説明します。

そのSurfaceハードウェアの一部を切望しているが、Linuxターミナルなしでは生きていけない場合は、適切な場所に来ています。

この記事の執筆時点では、この記事の多くの項目で、Windowsを含むさまざまな項目の「プレビュー」または「インサイダー」ビルドを使用または切り替える必要があります。 これらのほとんどは、将来のある時点でメインのWindowsビルドに含まれる予定です。

ジャンプした後もっと! 以下を読み続けてください↓

Linux用Windowsサブシステム(WSL)

Linux用のWindowsサブシステム、または「WSL」は、Windows上でLinuxを実行できるようにするものです。 しかし、この狂った科学とは正確には何ですか?

WSLは、現在の形で、LinuxシステムコールをWindowsシステムコールに変換する変換レイヤーです。 LinuxはWSL上で実行されます。 つまり、Linux on Windowsを入手するには、次の3つのことを行う必要があります。

  1. WSLを有効にし、
  2. Linuxをインストールし、
  3. リストには常に3つのアイテムを含めてください。

結局のところ、その変換レイヤーは少し遅いです— spliceまたはsliceが必要かどうかを思い出そうとしているようなものです。 これは、WSLがファイルシステムの読み取りと書き込みを行う場合に特に当てはまります。 npm installと、何千ものファイルがマシンにコピーされるため、これはWeb開発者にとっては大きな問題です。 つまり、私はあなたのことを知りませんが、私は自分の弦を左パッドするつもりはありません。

WSLのバージョン2は別の話です。 変換レイヤーを使用する代わりにWindowsの仮想化コアを利用するため、現在のバージョンよりもかなり高速です。 私がそれが「かなり速い」と言うとき、私は方法、はるかに速いことを意味します。 私と同じくらい速く「スプライスvsスライス」をグーグルで検索します。

そのため、WSL 2のインストール方法を説明します。これを書いている時点では、Windowsの「Insider」ビルドを使用している必要があります。

まず最初に:この短いガイドに従って、Windows 10でWSLを有効にし、Windowsのバージョン番号を確認してください。

インストールしたら、Windowsキーを押して「windowsinsider」と入力します。 次に、「WindowsInsiderプログラム設定」を選択します。

Windows InsiderProgram設定メニューオプション
(大プレビュー)

どの「リング」を使用するかについては、いくつかの異なるオプションがあります。 私が知っている多くの人々が速いリングにいます。 でも、私は用心深い人です。 子供の頃、お腹の遊び場のすべり台を横に持って降りていました。 だから私はスローリングにとどまります。 私はこれを数か月使用していますが、通常のWindowsほど破壊的または不安定ではないことがわかりました。

WSL 2が必要であるが、スライドで死にたくない場合は、これは良いオプションです。

「遅い」リングを示すWindowsInsider設定画面
(大プレビュー)

この記事を公開した後、私はWSL2が実際にはスローリング上にないことを知りました。 あなたはそれを手に入れるために速いリングにいる必要があるでしょう。 私はこの記事を書く過程のある時点で速いリングにいたに違いありません。 とても速いリングです。 スライドで頑張ってください!

次に、WSLバージョン2で必要なWindowsの「仮想マシンプラットフォーム」機能を有効にする必要があります。この画面を表示するには、Windowsキーを押して「Windows機能」と入力します。 次に、「Windowsの機能をオンまたはオフにする」を選択します。 「仮想マシンプラットフォーム」を選択します。 「WindowsSubsystemforLinux」オプションはすでに有効になっているはずです。

「仮想マシンプラットフォーム」と「WindowsSubsystemforLinux」が強調表示された「Windowsの機能」画面
(大プレビュー)

WSLが有効になったので、Linuxをインストールできます。 皮肉なことに、これはWindowsストアから直接行います。 2019年にのみ、「WindowsストアからLinuxをインストールする」ことをお勧めします。

選択できるディストリビューションはいくつかありますが、Ubuntuは、VS Codeを含め、後で構成するすべてのツールで最もサポートされる予定です。 これ以降のすべての手順は、Ubuntuのインストールを前提としています。 別のディストロをインストールすると、すべての賭けが無効になります。

Windowsストアから「Ubuntu」を検索します。 Ubuntu、Ubuntu 18.04、Ubuntu16.04の3つから選択できます。 Ubuntuはその04マイナーバージョン番号が本当に好きですよね?

Windowsストアの「Ubuntu」アイテム
(大プレビュー)

「Ubuntu」ディストリビューション(このスクリーンショットの最初のディストリビューション)は「メタバージョン」であり、最新バージョンを指すプレースホルダーです。 今のところ、それは18.04です。

後でWindowsエクスプローラーでLinuxファイルシステムを参照する方法を紹介するので、メタバージョンを使用しました。ドライブ名として「Ubuntu18.04」を使用するのは「Ubuntu」だけではなく、やや面倒です。

このインストールは、インターネット接続によってはかなり迅速です。 たったの215メガバイトですが、私はここでギガビット接続を使用しています。誰かがギガビット接続を使用しているかどうかをどうやって知ることができますか? 心配しないでください、彼らはあなたに言うでしょう。

インストールすると、スタートメニューに「Ubuntu」アプリが表示されます。

Ubuntuがインストールされ、Windowsのスタートメニューに表示されます
(大プレビュー)

それをクリックすると、Bashターミナルが表示されます。

Windowsで実行されているUbuntuターミナル
(大プレビュー)

テクノロジーの奇跡を満喫してください。

デフォルトでは、WSLバージョン1で実行されます。バージョン2にアップグレードするには、PowerShellターミナルを開いてコマンドを実行する必要があります。

「Windows」キーを押して「Powershell」と入力します。

スタートメニューの「Powershell」項目
(大プレビュー)

PowerShellターミナルから、 wsl --list --verboseを実行することにより、使用しているWSLのバージョンを確認できます。

Powershell内から実行されているすべてのWSLインスタンスの詳細リストを実行する
(大プレビュー)

バージョン1を表示している場合は、 --set-versionコマンドを実行し、インスタンスの名前(Ubuntu)と必要なバージョン(2)を指定する必要があります。

 wsl --set-version Ubuntu 2 
Powershellを使用してWSLのバージョンをバージョン2に設定する
(大プレビュー)

マシンの肉の量にもよりますが、これには少し時間がかかります。 鉱山は「数分」のギブまたはテイクを取りました。 完了すると、WSLの最新かつ最高のバージョンが表示されます。

Linuxではあなたの頭脳です…Windowsでは。

LinuxはWindowsではありません。 WSLは、Windowsオペレーティングシステム上でのbashプロンプトではありません。 これは、独自のフォルダ構造とインストールされたアプリケーションを備えた完全なオペレーティングシステムです。 Windowsインストーラーを使用してNodeをインストールする場合、NodeがLinuxにインストールされていないため、Linuxでのnodeの入力は失敗します。 Windowsにインストールされています。

ただし、WSLの真の魔法は、WindowsとLinuxをシームレスに接続して、マシン上で1つのファイルシステムとして表示されるようにする方法にあります。

ファイルとフォルダのナビゲーション

デフォルトでは、UbuntuターミナルはLinuxホームディレクトリ(または/home/your-user-name )にユーザーをドロップします。 /mnt/cに移動すると、Windows側に移動できます。

CドライブのコンテンツがリストされたUbuntuターミナル
(大プレビュー)

ここで一部の権限が拒否されていることに注意してください。 これらのファイルにアクセスするには、Ubuntuアイコンを右クリックし、[管理者として実行]をクリックする必要があります。 これは、Windowsが昇格されたアクセス許可を行う方法です。 Windowsにはsudoはありません。

アプリケーションの起動

Ubuntuターミナルから任意のWindowsアプリケーションを起動できます。 たとえば、UnbuntuターミナルからWindowsエクスプローラーを開くことができます。

WindowsエクスプローラーとUbuntuターミナル
(大プレビュー)

これも逆に機能します。 Linux側にインストールされている任意のアプリケーションを実行できます。 ここでは、WindowsコマンドラインからLinuxにインストールされている「fortune」を実行しています。 (これは、ランダムで無意味な運命がなければ、適切なLinuxインストールではないためです。)

Linuxの「フォーチュン」プログラムを実行するWindowsコマンドライン
(大プレビュー)

2つの異なるオペレーティングシステム。 2つの異なるファイルシステム。 インストールされたアプリケーションの2つの異なるセット。 これがどのように混乱する可能性があるかを見てください。

すべてをまっすぐに保つために、すべてのJavaScript開発ファイルとツールをLinux側にインストールしておくことをお勧めします。 とは言うものの、WindowsとLinuxの間を移動し、両方のシステムからファイルにアクセスする機能は、WSLの核となる魔法です。 それを忘れないでください。それが、このセットアップ全体を単なる標準のLinuxボックスよりも優れたものにしているからです。

開発環境のセットアップ

これからは、Linux onWindowsのキラーセットアップになると思うものについて意見のある項目のリストを提供します。 覚えておいてください:私の意見はそれだけです。 意見。 私のすべての意見と同じように、それらは100%正しいということが起こります。

より良いターミナルを手に入れる

はい、Ubuntuをインストールしたときにターミナルを取得しました。 これは、実際にはLinuxディストリビューションに接続されているWindowsコンソールです。 それは悪いコンソールではありません。 サイズを変更したり、コピー/貼り付けをオンにしたりできます(設定で)。 ただし、タブなどを実行したり、新しいウィンドウを開いたりすることはできません。 多くの人がMacで交換用のターミナルプログラムを使用しているように(私はHyperを使用しています)、Windowsには他のオプションもあります。 GithubのAwesomeWSLリストには、かなり網羅的なリストが含まれています。

これらはすべて優れたエミュレーターですが、Windowsをよく知っている人が作成した新しいオプションがあります。

Microsoftは、「WindowsTerminal」と呼ばれる新しいアプリケーションに取り組んでいます。

WindowsストアのWindowsターミナルアイテム
(大プレビュー)

WindowsターミナルはWindowsストアからインストールでき、現在プレビューモードです。 私はかなり長い間それを使用してきました、そしてそれは十分な機能を持っていて、そして私がそれに完全な支持を与えるのに十分安定しています。

新しいWindowsターミナルは、フルタブインターフェイス、コピー/貼り付け、複数のプロファイル、透明な背景、背景画像、さらには透明な背景画像を備えています。 ターミナルをカスタマイズしたいならフィールドデーで、このサックレースに勝つようになりました。

これが私の現在の端末です。 ここでは、いくつかの重要な調整について説明します。

著者の現在の端末:右下隅に漫画の惑星がある紺色の背景。緑と白のテキスト。
(大プレビュー)

Windowsターミナルはかなりカスタマイズ可能です。 左上(「 + 」記号の横)にある「 」矢印をクリックすると、「設定」にアクセスできます。 これにより、JSONファイルが開きます。

コピー/貼り付けをバインド

ファイルの先頭には、すべてのキーバインディングがあります。 私が最初にしたことは、「コピー」をCtrl + Cにマップし、 Ctrl + Vに貼り付けることでした。 理解できないStackOverflowのコマンドをコピーして貼り付ける方法は他にありますか?

 { "command": "copy", "keys": ["ctrl+c"] }, { "command": "paste", "keys": ["ctrl+v"] },

問題は、 Ctrl + CがすでにSIGINT、またはLinuxのInterrupt / killコマンドにマップされていることです。 コピー/貼り付けをそれぞれCtrl + Shift + CおよびCtrl + Shift + Vにマッピングすることでこれを処理する、Windows用の端末はたくさんあります。 問題は、コピー/貼り付けがWindowsの1か所おきにCtrl + C / Ctrl + Vであるということです。 ターミナルでCtrl + Cを何度も押し続けて、コピーしようとしました。 私はそれをやめられませんでした。

Windowsターミナルはこれを別の方法で処理します。 テキストを強調表示してCtrl + Cを押すと、テキストがコピーされます。 実行中のプロセスがある場合でも、SIGINTコマンドを送信して中断します。 これは、WindowsターミナルでCtrl + C / Ctrl + Vをコピー/貼り付けに安全にマップでき、プロセスを中断する機能を妨げないことを意味します。

コピー/貼り付けがこれほど多くの心痛を引き起こす可能性があると誰が考えましたか?

デフォルトプロファイルを変更する

デフォルトのプロファイルは、新しいタブを開いたときに表示されるプロファイルです。 デフォルトでは、これはPowershellです。 下にスクロールして、Linuxプロファイルを見つけてください。 これは、 wsl.exe -d Ubuntuを開くものです。 GUIDをコピーして、 defaultProfile設定に貼り付けます。

これらの2つの設定を移動して、見やすくするために互いに隣接するようにしました。

settings.jsonファイルで強調表示されているデフォルトのターミナルプロファイル
(大プレビュー)

背景を設定する

背景が濃い無地で、右隅にフラットなロゴが付いているのが好きです。 これを行うのは、ロゴを明るく見やすくしたいが、テキストの邪魔にならないようにするためです。 これは私が自分で作成したものですが、SimpleDesktopsにはフラットな画像の素晴らしいコレクションがあります。

背景はbackgroundImageプロパティで設定されます。

 "backgroundImage": "c:/Users/YourUserName/Pictures/earth.png" 
右下隅に漫画の惑星がある青い正方形の画像
(大プレビュー)

「アクリル」と呼ばれる設定にも気付くでしょう。 これにより、背景の不透明度を調整できます。 背景色が無地の場合、これは非常に簡単です。

 "background": "#336699", "useAcrylic": true, "acrylicOpacity": 0.5 
背景がやや透明な端末
(大プレビュー)

arcylicOpacity設定とbackgroundImageOpacityを組み合わせることで、これを背景画像でも実現できます。

 "backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png", "useAcrylic": true, "acrylicOpacity": 0.5 
透明な画像と透明な背景の両方を備えた端末
(大プレビュー)

私のテーマでは、透明度によってすべてがミュートに見えるため、 useAcrylicfalseに設定したままにします。

フォントを変更する

Windows Terminalを構築しているチームは、「CascadiaCode」と呼ばれる新しいフォントにも取り組んでいます。 この記事の執筆時点では利用できないため、代わりにデフォルトのWindowsフォントを使用してください。

Windowsターミナルのデフォルトのフォントは「Consolas」です。 これは、Windowsコマンドラインが使用するのと同じフォントです。 本当のUbuntuの感触が必要な場合は、ChrisHoffmanが公式のUbuntuMonoフォントをインストールする方法を指摘します。

違いがわかるように、前と後を次に示します。

 "fontFace": "Ubuntu Mono" 
ターミナルのConsolasフォントとUnbuntuMonoフォントを並べて比較
(大プレビュー)

それらはかなり似ています。 主な違いは、Ubuntu Monoの間隔にあります。これにより、端末が少しタイトでクリーンになります。

配色

配色はすべて設定ファイルの下部にあります。 「キャンベル」の配色をベースラインとしてコピーしました。 私は色を名前と一致させようとしますが、私も悪党になることを恐れません。 「#ffffff」を「blue」にマッピングします—気にしません。

settings.jsonファイルの配色設定
(大プレビュー)

私が「Earth」と名付けたこの特定のスキームが気に入った場合は、この要点をまとめたので、スクリーンショットからこの混乱をすべて手動でコピーする必要はありません。

カラープレビューは、VSCodeの「カラーハイライト」拡張機能によって提供されます。

デフォルトの開始ディレクトリを変更する

デフォルトでは、WSLプロファイルはWindows側のホームディレクトリに移動します。 この記事で推奨しているセットアップに基づいて、代わりにLinux homeフォルダーにドロップすることをお勧めします。 これを行うには、「Ubuntu」プロファイルのstartingDirectory設定を変更します。

 "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\burkeholland"

そこのパスに注意してください。 このパス(余分なエスケープスラッシュを除く)を使用して、WindowsコマンドラインからWSLにアクセスできます。

WindowsコマンドラインからLinuxホームディレクトリに対して実行される「dir」コマンド
(大プレビュー)

Zsh / Oh-My-Zshをインストールします

これまでにZshとOh-My-Zshを使用したことがない場合は、本物の楽しみを味わうことができます。 Zsh(または「Zシェル」)は、Linuxの代替シェルです。 暗黙のディレクトリ切り替え( cdと入力する必要はありません)、テーマのサポート、プロンプトの改善など、Bashの基本機能を拡張します。

Zshをインストールするには、Linuxインストールですぐに使用できるaptパッケージマネージャーを使用してZshを取得します。

 sudo apt install zsh

curlを使用してoh-my-zshをインストールします。 Oh-my-zshは、プラグイン、テーマ、および無数のキーボードショートカットを使用して、シェルエクスペリエンスをさらに向上させるzshの構成セットです。

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

次に、デフォルトのシェルをZshに変更するかどうかを尋ねられます。 あなたはそうします、それで肯定的に答えてください、そしてあなたは今ZshとOh-My-Zshで稼働しています。

デフォルトのシェルを変更するかどうかを尋ねる端末
(大プレビュー)

プロンプトがずっときれいになっていることに気付くでしょう。 ~/.zshrcファイルのテーマを変更することで、そのプロンプトの外観を変更できます。

VIMのようなnanoで開きますが、必要に応じて編集して終了することができます。

 nano ~/.zshrc

テーマを設定する行を変更します。 その上にテーマの全リストを含むURLがあります。 「クラウド」のものはいいと思います。 そしてかわいい。

zshrcファイルで設定されている「クラウド」テーマ
(大プレビュー)

取得した.zshrcへの変更を取得するには、それを入手する必要があります。

 source ~/.zshrc 
「クラウド」テーマプロンプト
(大プレビュー)

グリフを必要とする「agnoster」のようなテーマを選択する場合は、グリフを含むUbuntuMonoの電力線が注入されたバージョンが必要になります。 そうしないと、キーボードで顔をつぶしたような奇妙な文字で端末がいっぱいになります。 Nerd Fontsは、かなりうまく機能しているように見えるフォントを提供しています。

これで、ディレクトリ名を入力するだけでディレクトリを変更するなどのことができます。 cdは必要ありません。 ディレクトリに戻りたいですか? ただ.. ディレクトリ名全体を入力する必要はありません。最初の数文字を入力してタブを押すだけです。 Zshは、検索に一致するすべてのファイル/ディレクトリのリストを提供し、それらをタブで移動できます。

多くのパスの1つが強調表示された端末
(大プレビュー)

ノードのインストール

Web開発者は、おそらくNodeをインストールしたいと思うでしょう。 Web開発を行うためにNodeインストールする必要はないと思いますが、2019年には確かにそのように感じます!

あなたの最初の本能はaptでノードをインストールすることかもしれません、それはあなたがすることができます、しかしあなたは2つの理由でそれを後悔するでしょう:

  1. aptのNodeのバージョンはひどく時代遅れです。
  2. アクセス許可の問題が発生しないように、バージョンマネージャーを使用してNodeをインストールする必要があります。

これらの問題の両方を解決する最良の方法は、nvm(ノードバージョンマネージャー)をインストールすることです。 zshをインストールしたので、zshrcファイルにnvmプラグインを追加するだけで、残りはzshが処理します。

まず、 zsh-nvmリポジトリにクローンを作成してプラグインをインストールします。 (心配しないでください。GitはUbuntuインストールに標準で付属しています。)

 git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm

次に、プラグインとして~/.zshrcファイルに追加します。

 `nano ~/.zshrc` plugins (zsh-nvm git) 
zsh-vnm-pluginが追加されたzshrcファイル
(大プレビュー)

source ~/.zshrcを使用してzshrcファイルを再度ソースすることを忘れないでください。そうすると、nvmがインストールされていることがわかります。

nvmのインストールの進行状況を表示するターミナル
(大プレビュー)

これで、nvmを使用してノードをインストールできます。 複数のバージョンのノードを並べてインストールし、それらを簡単に切り替えることができます。 また、グローバルnpmインストールを実行するときに権限エラーはありません!

 nvm install --lts

プラグインを使用するとnvmを簡単にアップグレードできるため、標準のnvmインストールよりもこれをお勧めします。 これは、標準の「カール」インストールでは一種の苦痛です。 これはプラグインを使用した1つのコマンドです。

 nvm upgrade

自動提案を利用する

zsh用の私の非常にお気に入りのプラグインの1つは、zsh-autosuggestionsです。 以前に端末に入力したものを記憶し、もう一度入力を開始するとそれらを認識し、必要な行を「自動提案」します。 このプラグインは、私が覚えているよりも何度も便利になりました。特に、過去に使用した長いCLIコマンドに関しては、覚えることができません。

リポジトリをzsh拡張フォルダーに複製します。

 git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

次に、それをzshプラグインに追加し、zshrcファイルを入手します。

 nano ~/.zshrc # In the .zshrc file plugins(zsh-nvm zsh-autosuggestions git) source ~/.zshrc

プラグインはzshの履歴を読み取るので、前に入力したコマンドの入力を開始して、魔法を見てください。 上記のlongcloneコマンドの最初の部分を入力してみてください。

zshautosuggestionsを表示しているターミナルがgitcloneコマンドを自動的に完了します
(大プレビュー)

を押すと、コマンドがオートコンプリートされます。 を押し続けると、一致する可能性のある履歴内のコマンドのいずれかが循環します。

重要なキーボードショートカット

私がいつも使っているターミナルショートカットがいくつかあります。 これは、VSCodeを含むすべてのツールで見つかります。 すべてのショートカットを学習しようとすると、それらを覚えるのに十分に使用できないため、時間の無駄になります。

これが私が定期的に使用するいくつかです:

ターミナルショートカットそれは何をするためのものか?
Ctrl + L これにより、ターミナルがクリアされ、トップに戻ります。 これは、「クリア」と入力するのと同じです。
Ctrl + U これにより、現在の行のみがクリアされます。
Ctrl + A コマンドラインの先頭にカーソルを移動します。
Ctrl + E 行の終わりに移動します。
Ctrl + K カーソルの後のすべての文字を削除します。

それでおしまい! 私がおそらく学んだ他のすべては、それがまったく役に立たないので忘れてしまいました。

Gitの構成(ハブ/ラボ/ Whatevs)

GitはUbuntuに付属しているため、インストールは必要ありません。 選択したソース管理ホスティング業者の指示に従って、sshキーを作成して機能させることができます。

Githubの手順では、「コピー」ユーティリティを使用してsshキーをコピーするように指示されていることに注意してください。 Ubuntuには「xcopy」コマンドがありますが、クリップボードに関してLinuxとWindowsの間に相互運用性がないため、ここでは機能しません。

代わりに、Windowsクリップボード実行可能ファイルを使用して、ターミナルから直接呼び出すことができます。 最初にcatでテキストを取得してから、それをWindowsクリップボードにパイプする必要があります。

 cat ~/.ssh/id_rsa.pub | clip.exe

Githubのドキュメントには、 ssh-agentが実行されていることを確認するように指示されています。 そうではありません。 キーをエージェントに追加しようとすると、次のように表示されます。

sshエージェントが実行されていないことを示す端末
(大プレビュー)

エージェントを起動することはできますが、次にWindowsをリブートするか、WSLが停止したときに、エージェントを再起動する必要があります。 これは、WSLに初期化システムがないためです。 WSLの開始時にすべてのサービスを開始するsystemdまたは別のプロセスはありません。 WSLはまだプレビュー段階にあり、チームはこのためのソリューションに取り組んでいます。

それまでの間、信じられないかもしれませんが、このためのzshプラグインもあります。 これはssh-agentと呼ばれ、oh-my-zshがインストールされているため、 .zshrcファイルで参照するだけです。

 zsh-nvm zsh-autosuggestions ssh-agent git

これにより、WSLを初めて起動したときにssh-agentが実行されていない場合に、ssh-agentが自動的に起動します。 欠点は、WSLが新しく開始されるたびにパスフレーズを要求されることです。 つまり、基本的には、コンピュータを再起動するときはいつでもです。

rsaキーのパスフレーズの入力を求める端末
(大プレビュー)

VSコードとWSL

WSLにはGUIがないため、VSCodeのようなビジュアルツールをインストールすることはできません。 それはWindows側にインストールする必要があります。 Linux側のファイルにアクセスするWindows側で実行されているプログラムがあるため、これは問題を引き起こします。これにより、すべての癖や「許可が拒否された」問題が発生する可能性があります。 一般的な経験則として、 Microsoftは、Windowsプログラムを使用してWSL側のファイルを変更しないことをお勧めします。

これを解決するために、「リモートWSL」と呼ばれるVSCodeの拡張機能があります。 この拡張機能はMicrosoftによって作成されており、WSL内で開発できますが、VSCode内から開発できます。

拡張機能をインストールしたら、コマンドパレットを開いてVSCodeをUbuntu側に直接アタッチできます( Ctrl + Shift + P)、「Remote-WSL:NewWindow」を選択します。

コマンドパレットで強調表示された「リモートWSL:新しいウィンドウ」コマンドを使用したVSコード
(大プレビュー)

これにより、VS Codeの新しいインスタンスが開き、完全にLinux側にいるように作業できます。 「ファイル/開く」を実行すると、WindowsではなくUbuntuファイルシステムが参照されます。

VSCodeの「ファイルを開く」ビュー
(大プレビュー)

VS Codeの統合ターミナルは、美しくカスタマイズされたzshセットアップを開きます。 リモートWSL拡張機能をインストールすると、すべてが正常に機能します。

コードを使用して端末からコードを開く場合code . 、VS Codeは、WSLから開かれたことを自動的に検出し、リモートWSL拡張機能を自動接続します。

リモートWSLを使用したVSコード拡張

VS CodeのリモートWSL拡張機能は、Linux側に小さなサーバーをセットアップし、Windows側のVSCodeからサーバーに接続することで機能します。 その場合、VS Codeにインストールした拡張機能は、WSLからプロジェクトを開いたときに自動的に表示されません。

たとえば、VSCodeで開いているVueプロジェクトがあります。 構文の強調表示やフォーマットなどのために適切なVue拡張機能をすべてインストールしていますが、VSCodeはこれまで.vueファイルを見たことがないように動作します。

構文が強調表示されていないVSCodeで開いている.vueファイル
(大プレビュー)

インストールしたすべての拡張機能は、WSLで有効にできます。 WSLで必要な拡張機能を見つけて、[WSLにインストール]ボタンをクリックするだけです。

VSCodeのVeturVSCode拡張機能のランディングページ
(大プレビュー)

WSLにインストールされているすべての拡張機能は、拡張機能エクスプローラービューの独自のセクションに表示されます。 拡張機能がたくさんある場合は、それぞれを個別にインストールするのは少し面倒かもしれません。 WSLにあるすべての拡張機能をインストールするだけの場合は、[ローカル-インストール済み]セクションの上部にある小さなクラウドダウンロードアイコンをクリックします。

VS Codeの[拡張機能]ビューで、[WSLにすべての拡張機能をインストール]アイコンが強調表示されています
(大プレビュー)

開発ディレクトリを設定する方法

これはすでに意見のある記事なので、ファイルシステム上でプロジェクトをどのように構成すべきかについて、あなたが尋ねなかった記事があります。

私はすべてのプロジェクトをLinux側に置いています。 プロジェクトを「マイドキュメント」に入れてから、WSLからプロジェクトを操作しようとはしません。 私の脳はそれを処理できません。

Linuxの/homeフォルダーのルートに/devというフォルダーを作成します。 そのフォルダー内に、Githubリポジトリと同じ名前の別のフォルダー/burkehollandを作成します。 そのフォルダーは、Githubにプッシュされていないプロジェクトも含めすべてのプロジェクトが移動する場所です。

別のGithubアカウント(「microsoft」など)からリポジトリのクローンを作成する場合は、「dev」に/microsoftという名前の新しいフォルダーを作成します。 次に、リポジトリをその中のフォルダーに複製します。

基本的に、ローカルマシンのソース管理と同じ構造を模倣しています。 プロジェクトがどこにあるのか、そしてプロジェクトがどのリポジトリに接続されているのかを、その場所だけで推論する方がはるかに簡単だと思います。 シンプルですが、すべてを整理しておくのに非常に効果的です。 そして、私は私が得ることができるすべての助けが必要です。

著者は、ターミナルにリストされているフォルダ構造について意見を述べました
(大プレビュー)

Windowsエクスプローラからのファイルの閲覧

LinuxのファイルをWindows側から取得する必要がある場合があります。 WSLのすばらしい点は、それでも実行できることです。

1つの方法は、マップされたドライブと同じようにWSLにアクセスすることです。 エクスプローラーバーから直接\\wsl$でアクセスします。

 \\wsl$ 
マウントされたディレクトリとしてのWindowsエクスプローラーUbuntuインストール
(大プレビュー)

これは、さまざまな理由で行う可能性があります。 たとえば、今日、ウェブストアにないChrome拡張機能が必要でした。 そこで、リポジトリをWSLで複製し、「解凍された拡張機能」としてそのリポジトリに移動して、Edgeにロードしました。

Linuxで頻繁に行うことの1つは、ターミナルから直接ファイルを含むディレクトリを開くことです。 これは、 explorer.exeを直接呼び出すことにより、WSLでも実行できます。 たとえば、このコマンドはWindowsエクスプローラで現在のディレクトリを開きます。

 $ explorer.exe . 
ターミナルから現在のディレクトリでWindowsエクスプローラを開くことを示すGIF

ただし、このコマンドは少し面倒です。 Linuxでは、 open .~/.zshrcにエイリアスを作成することで、同じ魔法をかけることができます。

 alias open="explorer.exe"

Docker

すべてのツールはLinux側にあるべきだと言ったとき、私はそれを意味しました。 これにはDockerが含まれます。

これは、ゴムが実際に道路に出会うところです。 ここで必要なのは、Windows内で実行されているLinux内で実行されているDockerです。 あなたがブログの投稿にそれを書き留めるとき、それは少しロシアの入れ子人形です。 実際には、それはかなり簡単です。

正しいバージョンのDockerforWindowsが必要です。 この記事の執筆時点では、これがWSL 2 TechPreviewです。

インストーラーを実行すると、Linuxコンテナーの代わりにWindowsコンテナーを使用するかどうかを尋ねられます。 あなたは間違いなくそうします。 そうしないと、WSLでDockerを実行するオプションが得られません。

「Windowsコンテナを使用する」オプションが選択されたDockerインストール画面
(大プレビュー)

これで、システムトレイの項目をクリックし、[WSL 2 Tech Preview]を選択することで、WSLでDockerを有効にできます。

DockerDaemonコンテキストメニューのWSL2TechPreviewオプション
(大プレビュー)

サービスを開始した後、期待どおりにWSL内でDockerを使用できます。 WSLでDockerを実行すると、パフォーマンスが大幅に向上するだけでなく、コンテナーのコールドスタート時間が向上します。

また、VS Code用のDocker拡張機能をインストールすることをお勧めしますか? Dockerセットアップに視覚的なインターフェイスを配置し、これらのコマンドラインフラグとオプションをすべて覚えておく必要がないため、通常はDockerの操作が簡単になります。

Windowsでより多くのBashを入手する

この時点で、BashをWindowsに配置する方法と、そこに到達した後の動作について理解する必要があります。 ターミナルは無限にカスタマイズでき、PATH変数の自動設定、エイリアスの作成、ターミナルでのASCIIカウの取得など、さまざまな種類のradプログラムを追加できます。

WindowsでBashを実行すると、まったく新しい世界が開かれました。 生産性の面で大好きなWindowsと、開発者として頼りにしているLinuxを組み合わせることができます。 何よりも、1台のマシンで両方のプラットフォーム用のアプリを構築できるようになりました。

参考文献

WindowsでのBashの詳細については、こちらをご覧ください。

  • 「WindowsSubsystemForLinuxインストールガイドForWindows 10」、Microsoft Docs
  • 「Windows10にBashシェルをインストールして使用する方法」ChrisHoffman、ハウツーオタク
  • 「SSHとWSLの共有」DrewWilson
  • 「Linux用のウィンドウサブシステムに夢中になる」BrianKetelsen
  • 「Windows10の新しいBashシェルでできることはすべて」、ハウツーオタクのクリスホフマン

この記事に対する忍耐、支援、およびガイダンスを提供してくれたBrian Ketelsen、Matt Hernandez、Rich Turner、およびCraigLoewenに特に感謝します。