私は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.exe
Windowsバージョン1903のすべてのオプションが含まれています。使用:
wsl [Argument] [Options...] [CommandLine]
Linuxコマンドを実行するためのパラメータ
- パラメータなし
コマンドラインが指定されていない場合は、wsl.exeが起動します。基本シェル。
実際、デフォルトのシェルを定義する内容はそのページにはありませんが、FAQページそれは言う:
バッシュとは何ですか?
Bashは広く使用されているテキストベースのシェルであり、コマンド言語です。それ基本シェルUbuntuや他のLinuxディストリビューションとmacOSに含まれています。ユーザーはシェルにコマンドを入力してスクリプトを実行するか、コマンドとツールを実行して多くのタスクを完了します。
答え4
WSLのデフォルトシェルはディストリビューションによって異なります。ディストリビューションには、デフォルトのシェルに付属するシェルを構成するポリシーがあります。
初めてセットアップ中にアカウントを作成すると、ディストリビューションのデフォルトの対話型シェルが提供されます。場合によっては、これはデフォルトのシェルとは異なります。たとえば、DebianとUbuntuのデフォルトシェルは/bin/sh
一般的ですが、良い対話型シェルではないdash
ため、指定しないと新しいユーザーのデフォルトシェルになります。dash
bash
これを使用してchsh
ユーザーのシェルを変更できます。そうすると、WSLは少なくとも対話型使用のためにそのシェルをロードします。私の設定はです/bin/zsh
。
PowerShellはPOSIXとは大きく異なり、ほとんどのLinuxソフトウェアにはPOSIXシェルがあると想定しているため、ほとんどのLinuxディストリビューションで実行可能なオプションでPowerShellを見つける可能性はありません。さらに、多くのソフトウェアは、ユーザーのシェルがPOSIXに準拠するか、そうでない場合は少なくともcsh
1つまたは他のものに準拠すると仮定し、fish
PowerShellを使用すると意図しない損傷を引き起こす可能性があります。