回答:
cygwinをマルチユーザー環境chsh
として使用している場合を除きます(その場合、標準環境で使用する場合と同じように使用します)。
それ以外の場合は、cygwin.batを変更して、zsh -l -i
代わりにbash --login -i
実行し、ログインシェルとして実行します。
もちろん、起動時に複数のシェルを実行する場合は、一連の.bat
ファイルを作成して異なるシェルをロードするだけです。(sh
、ksh
、csh
、fish
など)
これを更新chsh
して、Unix側でこれを行うことなく情報を提供する必要があると感じました。編集し/etc/passwd
たファイルとの出現置き換える/bin/bash
とします/bin/zsh
。(これは事実上何をchsh
するかですが、この方法ではすべてのユーザーに対して一度にそれを行います。)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
して、新しく作成された/etc/passwd
ファイルを編集します
私があなたの質問を正しく読んだなら、あなたはchereが 供給するもの以外のものを探しています (それは当然のことですが、それ自体はかなりクールです)。
Cygwinの現在のバージョンには/ etc / passwd ファイルがありません 。また、作業中のシステムには、制御できないドメインデータベースにWindowsアカウント情報があります。その結果、 chsh はサポートされなくなりました。
また、bashはstartxwin スクリプトにハードコーディングされておらず、.batファイルにもハードコーディングされていないこともわかりました 。.batファイルをいじる必要はまったくありません。
シェルを変更する方法を探して、mkpasswdに関するアドバイスを見つけました
ミックスに追加しました。
マンページは言った:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(間隔がそれほど「オフ」である理由がわかりません...)
次に、次のコマンドを使用しました。
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
次にCygwinターミナルを開くと、zshに直接移動します
そして、それはあなたが求めたものだと思います。
bin
cygwinディレクトリのディレクトリをWindowsパス環境変数に追加し、次のいずれかのショートカットを作成します。
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
または、デフォルトのcygwinスタートメニューショートカットを同じものに変更します。
/bin/zsh
代わりに使用する必要がありましたzsh
。
the bin directory in the cygwin directory to my Windows Path Environment Variable
私にとってこの変更なしで動作します
i
はログインシェルであり、ではないため必要ありませんinteractive
。
スタックオーバーフローに関する私の回答からコピーしました。
Cygwin が1 に対して推奨するpasswdファイルを作成する代わりに、/etc/ nsswitch.confを編集できます。次の行を追加または編集します。
db_shell:/ usr / bin / zsh
この方法の欠点は、複数のユーザーがいる場合、この変更がすべてのユーザーに影響することです。アップ/アップの側面は、非常にシンプルだということです。唯一の問題は、Cygwinを再起動する必要があることです。
あなたがいる場合行うこの変更後の使用あるmkpasswdを、それがログオンするために許可されているすべてのユーザーのためにあなたの新しいデフォルトのシェルを使用します。
1 mkpasswdのドキュメントには次のように書かれています:
本当に必要な場合を除き、このコマンドを使用してローカルの/ etc / passwdファイルを生成しないでください。詳細については、Cygwinユーザーガイドを参照してください。
ユーザーガイドには、ユーザーとグループが変更された場合に/ etc / passwdファイルと/ etc / groupファイルを再生成する必要があるという言及以外、確固たる理由を実際に見つけることができません。理由。プロセスは初心者にとって多少エラーが発生しやすいと言えます。
mintty / Cygwin Terminalで使用されるシェルを変更することに興味があると仮定すると、まずSHELL環境変数をチェックし、次に(現在は存在しない)passwdファイルをチェックし、次に/ bin / shにフォールバックします。デフォルトで。
私は、SHELL環境変数を設定することができたのWindowsでに/usr/bin/zsh
、それは、他に変更を加えることなく働きました。グローバルではなく、Windowsユーザー用に変更しました。
環境変数の設定は、Windowsのバージョンによって異なる可能性があります。Windowsのコントロールパネルで「環境」を検索してみてください。私にとって、Windows 7では、コントロールパネル→システム→システムの詳細設定、システムのプロパティコントロールパネル/ダイアログ、詳細タブ、環境変数ボタンの順にクリックして環境変数ダイアログを表示し、作成しました名前の新しいユーザー変数SHELL
の値で/usr/bin/zsh
。その後、すべてを終了して、新しいminttyを開始します。