如何更改 Cygwin 中的預設 shell?

如何更改 Cygwin 中的預設 shell?

我正在嘗試將 cygwin 中的預設 shell 從 bash 更改為 zsh。

  1. 普通的 unix 指令chsh在 cygwin 上不可用
  2. 現有版本的 cygwin 中似乎不再使用 etc/passwd 檔案。

那麼還可以如何更改預設 shell 呢?

答案1

答案取決於您如何啟動 Cygwin。

如果您啟動 CygwinCYGWIN.bat,修改最後一行/Cygwin.bat(通常C:\cygwin\是 或C:\cygwin64\)。

如果您啟動 Cygwin薄荷味,然後新增 shell 作為參數: mintty /usr/bin/zsh -

答案2

如果直接運作mintty.exe或從開始功能表或桌面執行Cygwin Terminal(這是mintty.exe的捷徑),則可以將Windows中的SHELL環境變數設為/usr/bin/zsh.

在 Windows 7 上:

  1. 按 Windows 鍵。
  2. 開始輸入“環境”。
  3. 當它出現時,選擇“編輯您帳戶的環境變數”。

其餘的應該是不言自明的。

答案3

複製自我在 Stack Overflow 的回答:


Cygwin 不會建立 passwd 文件,而是建議反對1、你可以編輯/etc/nsswitch.conf。新增或編輯以下行:

db_shell:/usr/bin/fish

此方法的缺點/優點是,如果您有多個用戶,此更改會影響所有用戶。好的一面是它非常簡單。唯一的問題是您必須重新啟動 Cygwin。

如果你在此變更後使用 mkpasswd,它將為允許登入的所有使用者使用新的預設 shell。


1 mkpasswd 文件是這樣說的:

不要使用此命令產生本地 /etc/passwd 文件,除非您確實需要一個文件。有關詳細信息,請參閱 Cygwin 使用者指南。

我實在找不到任何可靠的推理使用者手冊,除了提到如果您的用戶和群組發生更改,您將必須重新生成 /etc/passwd 和 /etc/group 文件,我認為這是一個足夠好的理由。我可以說這個過程對新手來說有點容易出錯。

答案4

我的託管服務 dreamhost.com 在其用戶編輯畫面中有一個選項框。它可以在四種不同的外殼中進行選擇,看起來有點像這樣

User Type: (Click one of these three buttons) 
  * FTP user - allows login via FTP only.   
  * SFTP user - allows login via SFTP only.
  * Shell user - allows login via both SSH and FTP. 
        Shell Type: ____/usr/bin/tcsh_____  
Disallow FTP?:  ___

相關內容