Cygwinを使用したzsh


回答:


45

cygwinをマルチユーザー環境chshとして使用している場合を除きます(その場合、標準環境で使用する場合と同じように使用します)。

それ以外の場合は、cygwin.batを変更して、zsh -l -i代わりにbash --login -i実行し、ログインシェルとして実行します。  

もちろん、起動時に複数のシェルを実行する場合は、一連の.batファイルを作成して異なるシェルをロードするだけです。(shkshcshfishなど)

更新...

これを更新chshして、Unix側でこれを行うことなく情報を提供する必要があると感じました。編集し/etc/passwdたファイルとの出現置き換える/bin/bashとします/bin/zsh。(これは事実上何をchshするかですが、この方法ではすべてのユーザーに対して一度にそれを行います。)


15
cygwinにはデフォルトで/ etc / passwdがなくなり、chshはサポートされなくなりました。この回答は役に立ちません(2014年4月10日)。
ジェフスナイダー

あなたが酔っている
@THESorcererに帰る

2
@JeffSniderを実行mkpasswd -l -p "$(cygpath -H)" > /etc/passwdして、新しく作成された/etc/passwdファイルを編集します
-BrunoLM

17

私があなたの質問を正しく読んだなら、あなたは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に直接移動します

そして、それはあなたが求めたものだと思います。


17

bincygwinディレクトリのディレクトリをWindowsパス環境変数に追加し、次のいずれかのショートカットを作成します。

mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login

または、デフォルトのcygwinスタートメニューショートカットを同じものに変更します。


2
/bin/zsh代わりに使用する必要がありましたzsh
クレイツ

1
the bin directory in the cygwin directory to my Windows Path Environment Variable私にとってこの変更なしで動作します
-ruslo

これiはログインシェルであり、ではないため必要ありませんinteractive
ティモ

7

スタックオーバーフローに関する私の回答からコピーしました。


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

db_shell:/ usr / bin / zsh

この方法の欠点は、複数のユーザーがいる場合、この変更がすべてのユーザーに影響することです。アップ/アップの側面は、非常にシンプルだということです。唯一の問題は、Cygwinを再起動する必要があることです。

あなたがいる場合行うこの変更後の使用あるmkpasswdを、それがログオンするために許可されているすべてのユーザーのためにあなたの新しいデフォルトのシェルを使用します。


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

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

ユーザーガイドには、ユーザーとグループが変更された場合に/ etc / passwdファイルと/ etc / groupファイルを再生成する必要があるという言及以外、確固たる理由を実際に見つけることができません。理由。プロセスは初心者にとって多少エラーが発生しやすいと言えます。


これは承認済みとしてマークする必要があります。
アルダ

4

mintty / Cygwin Terminalで使用されるシェルを変更することに興味があると仮定すると、まずSHELL環境変数をチェックし、次に(現在は存在しない)passwdファイルをチェックし、次に/ bin / shにフォールバックします。デフォルトで。

私は、SHELL環境変数を設定することができたのWindowsで/usr/bin/zsh、それは、他に変更を加えることなく働きました。グローバルではなく、Windowsユーザー用に変更しました。

環境変数の設定は、Windowsのバージョンによって異なる可能性があります。Windowsのコントロールパネルで「環境」を検索してみてください。私にとって、Windows 7では、コントロールパネル→システム→システムの詳細設定、システムのプロパティコントロールパネル/ダイアログ、詳細タブ、環境変数ボタンの順にクリックして環境変数ダイアログを表示し、作成しました名前の新しいユーザー変数SHELLの値で/usr/bin/zsh。その後、すべてを終了して、新しいminttyを開始します。


今、これは多額の賛成です!Cygwinの内部の陰謀を台無しにせず、簡単に元に戻すことができる最も簡単な方法!
ペポルアン

1

探している人に役立つ場合に備えて、この答えを追加すると思いました。chere(「Bash prompt here」オプションを任意のフォルダーの右クリックコンテキストメニューに追加する)を使用する場合、次のコマンドでzsh(「Zsh Prompt Here」)に設定できます。

chere -i -t mintty -s zsh

0

IDE Intellij内でCygwinシェルを使用する場合は、settings / tools / terminal内で次のセットアップを使用します

c:\cygwin\bin\zsh.exe -l -i

これは、新しいウィンドウを生成する代わりに、intellij内にcygwinシェルを埋め込みます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.