cygwinでデフォルトのシェルをbashからzshに変更しようとしています。
- 通常のUNIXコマンド
chsh
はcygwinでは使用できません - etc / passwdファイルは、cygwinの既存のバージョンではもう使用されていないようです。
では、他にどのようにデフォルトのシェルを変更できますか?
cygwinでデフォルトのシェルをbashからzshに変更しようとしています。
chsh
はcygwinでは使用できませんでは、他にどのようにデフォルトのシェルを変更できますか?
回答:
答えは、Cygwinの起動方法によって異なります。
Cygwin.batでCygwinを起動する場合、最後の行/Cygwin.bat
(通常C:\cygwin\
またはC:\cygwin64\
)を変更します。
minttyでCygwinを起動する場合、パラメーターとしてシェルを追加します。 mintty /usr/bin/zsh -
CygWin\bin\zsh.exe
ます。sh.exe --login
Bashを起動しますが、どのように変更しますか?それともとにかく重要ではありませんか?前にsh.exe --login
不必要に実行されていると思いますsh
zsh
set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -i
hth
sh.exe
。今、私はあなたのメッセージを正しく読んでいないことに
-l
: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
mintty.exe
直接実行するか、[スタート]メニューまたはデスクトップ(mintty.exeへのショートカット)からCygwin Terminal を実行する場合、WindowsのSHELL環境変数をに設定できます/usr/bin/zsh
。
Windows 7の場合:
残りは自明であるべきです。
Stack Overflowに関する私の答えからコピーされました:
Cygwin が1 に対して推奨するpasswdファイルを作成する代わりに、/etc/ nsswitch.confを編集できます。次の行を追加または編集します。
db_shell:/ usr / bin / fish
この方法の欠点は、複数のユーザーがいる場合、この変更がすべてのユーザーに影響することです。アップ/アップの側面は、非常にシンプルだということです。唯一の問題は、Cygwinを再起動する必要があることです。
あなたがいる場合行うこの変更後の使用あるmkpasswdを、それがログオンするために許可されているすべてのユーザーのためにあなたの新しいデフォルトのシェルを使用します。
1 mkpasswdのドキュメントには次のように書かれています:
本当に必要な場合を除き、このコマンドを使用してローカルの/ etc / passwdファイルを生成しないでください。詳細については、Cygwinユーザーガイドを参照してください。
ユーザーとグループが変更された場合、/ etc / passwdと/ etc / groupファイルを再生成する必要があるという言及以外、ユーザーガイドには確かな根拠は実際には見つかりません理由。プロセスは初心者にとって多少エラーが発生しやすいと言えます。
これはハックです:あなたの最初の行としてこれを入れてください~/.bash_profile
:
exec zsh
sh.exe
にzsh.exe
Conemu設定>起動>タスク> bashのはCygwinのBash>にset CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i