web-dev-qa-db-ja.com

Cygwinでデフォルトのシェルを変更するにはどうすればよいですか?

Cygwinでデフォルトのシェルをbashからzshに変更しようとしています。

  1. 通常のUNIXコマンドchshはcygwinでは使用できません
  2. Etc/passwdファイルは、cygwinの既存のバージョンではもう使用されていないようです。

では、デフォルトのシェルを他にどのように変更できますか?

30
gyaani_guy

答えは、Cygwinの起動方法によって異なります。

Cygwin.batでCygwinを起動する場合は、/Cygwin.batの最後の行を変更します(通常はC:\cygwin\またはC:\cygwin64\)。

minttyでCygwinを起動する場合は、シェルをパラメーターとして追加します:mintty /usr/bin/zsh -

24
Steven

mintty.exeを直接実行するか、スタートメニューまたはデスクトップ(mintty.exeへのショートカット)からCygwinターミナルを実行する場合、Windowsのシェル環境変数を/usr/bin/zshに設定できます。

Windows 7の場合:

  1. Windowsキーを押します。
  2. 「環境」と入力し始めます。
  3. 表示されたら、「アカウントの環境変数を編集」を選択します。

残りは自明です。

19
dc46and2

Stack Overflow の私の回答からコピー:


Cygwinが推奨するpasswdファイルを作成する代わりに /1/etc/nsswitch.conf を編集できます。次の行を追加または編集します。

 db_Shell:/usr/bin/fish

この方法の欠点は、複数のユーザーがいる場合、この変更がすべてのユーザーに影響することです。アップ/アップの側面は、それが完全に単純であることです。唯一の問題は、Cygwinを再起動する必要があることです。

この変更後にdomkpasswdを使用すると、ログオンが許可されているすべてのユーザーに新しいデフォルトのシェルが使用されます。


1 mkpasswdのドキュメントには次のように書かれています:

本当に必要でない限り、このコマンドを使用してローカルの/ etc/passwdファイルを生成しないでください。詳細については、Cygwinのユーザーガイドを参照してください。

ユーザーズガイド では、ユーザーが/ etc/passwdファイルと/ etc/groupファイルを再生成する必要があるという言及以外に、確かな理由を見つけることができませんとグループが変化する、それは十分な理由だと思います。このプロセスは、初心者には多少エラーが発生しやすいと言えます。

16
P Daddy

これはハックです。これを~/.bash_profileの最初の行に入力してください:

exec zsh
7
glenn jackman