プログラムの実行

プログラムの実行

私はWindowsを使用せず、利用可能なコピーもありません。 WSL2のデフォルトシェルが何であるかを知りたいです。 sh、Bash、ZSHが付属していますか?それともPowerShellを使用しますか? WSL2でも動作することを知っています。

これはどこにも文書化されていますか?

答え1

短い答え

WSLのデフォルトのディストリビューションはUbuntu(Ubuntuの場合)です。

  • デフォルトの対話型シェルは次のとおりです。bash
  • デフォルトの非対話型シェルは次のとおりです。dash

したがって、「基本的な対話」を意味すると仮定して属性を渡すと、WSLのデフォルトシェルはbash

詳しくは

数日前にこの質問に対する答えを考えてみましたが、実際に「衝突」が保証されるわけではないようです。しかし、今日、コミュニティボットがこの質問を自動的に尋ねるように選択したので(受け取った答えがないため)、少し異なる説明をします。

まず、今のところあなたも知っていますが、WSLはさまざまなLinuxディストリビューションをサポートしています。 Windows の Microsoft Store から一部をインストールするか、他のほとんどのディストリビューションの rootfs をインポートできます。

私は本当にDebianを好み、同意します。定義シェルの場合は「デフォルト」です。いつも:

  • 作成時にデフォルトでユーザーに割り当てられるデフォルトの対話型シェル(およびroot)。
  • /bin/sh定義によれば、システムやその他の「POSIX」スクリプトを最も高速で最も互換性のある方法で実行するために接続されたすべてを意味するデフォルトの非対話型シェルです。

いくつかの歴史

  • WSL初期

    WSLがあるときまず発表、それは(おそらく不親切に)「Windows上でUbuntu Bash」と呼ばれていました。その時点では、「Bash」であなたの質問に答えることは非常に明白だと思います。

    WSLを起動するコマンドを使用してWSL / Ubuntuセッションを開始するのが一般的ですbash.exe。これ会議bashユーザーのシェルがすでに存在していても、常にUbuntuインスタンス内のシェルから起動します/etc/passwd

    ubuntu.exe一方、このコマンド(またはそのバリエーションの1つ)は、WSL Ubuntuディストリビューションをユーザーの/etc/passwdシェルで開始します。

  • 最近の歴史

    その後、WSLへの「デフォルトの配布」があるとは言えない灰色の領域に到達します。まず、WSLをインストール/有効にしてから、Microsoft Storeでディストリビューションを選択しました。

    起動方法はbash.exe「部分的に使用されていません」(Microsoftのドキュメントでは「History Command」と呼ばれます)であり、新しい方法wsl.exeに置き換えられました。いつもそうです契約違反カスタムシェルに追加されますが、すべての実行可能ファイルは/etc/passwd親プロセスを介して(または)実行できます。wsl --execute <appname>wsl -e

    その間、「基本」ディストロがないので、「distroによって異なります」。加えて、あなたの質問に答えるのは難しいです。

  • 今日

    Windows 10バージョン21H2およびWindows 11以降、新しいWSLインストールプロセスがあります。デフォルトwslのコマンドはWindowsに付属していますが、このコマンドを再度渡す必要がありますwsl --installするデフォルトのUbuntuをデフォルトのディストリビューションとして使用します。

    したがって、現時点では、UbuntuがWSLのデフォルトのディストリビューションであると言うのは妥当です。

  • 明日

    誰が知っていますか?これまで、WSLの5年の歴史から多くが明らかに変わったので、おそらくまた変わると確信しています:-)。

答え2

wslを使い始めたら、bash.exe明らかにbashです!しかし、新しいバージョンのWindows 10では状況が変わりました。

確認してください: wslのデフォルトシェルの変更

答え3

Microsoft以外の特定の文書が見つかりません。WSLリファレンスページそれは言う:

プログラムの実行

次のリストには、wsl.exeWindowsバージョン1903のすべてのオプションが含まれています。

使用:wsl [Argument] [Options...] [CommandLine]

Linuxコマンドを実行するためのパラメータ

  • パラメータなし

コマンドラインが指定されていない場合は、wsl.exeが起動します。基本シェル


実際、デフォルトのシェルを定義する内容はそのページにはありませんが、FAQページそれは言う:

バッシュとは何ですか?

Bashは広く使用されているテキストベースのシェルであり、コマンド言語です。それ基本シェルUbuntuや他のLinuxディストリビューションとmacOSに含まれています。ユーザーはシェルにコマンドを入力してスクリプトを実行するか、コマンドとツールを実行して多くのタスクを完了します。

答え4

WSLのデフォルトシェルはディストリビューションによって異なります。ディストリビューションには、デフォルトのシェルに付属するシェルを構成するポリシーがあります。

初めてセットアップ中にアカウントを作成すると、ディストリビューションのデフォルトの対話型シェルが提供されます。場合によっては、これはデフォルトのシェルとは異なります。たとえば、DebianとUbuntuのデフォルトシェルは/bin/sh一般的ですが、良い対話型シェルではないdashため、指定しないと新しいユーザーのデフォルトシェルになります。dashbash

これを使用してchshユーザーのシェルを変更できます。そうすると、WSLは少なくとも対話型使用のためにそのシェルをロードします。私の設定はです/bin/zsh

PowerShellはPOSIXとは大きく異なり、ほとんどのLinuxソフトウェアにはPOSIXシェルがあると想定しているため、ほとんどのLinuxディストリビューションで実行可能なオプションでPowerShellを見つける可能性はありません。さらに、多くのソフトウェアは、ユーザーのシェルがPOSIXに準拠するか、そうでない場合は少なくともcsh1つまたは他のものに準拠すると仮定し、fishPowerShellを使用すると意図しない損傷を引き起こす可能性があります。

関連情報