
我正在嘗試將 cygwin 中的預設 shell 從 bash 更改為 zsh。
- 普通的 unix 指令
chsh
在 cygwin 上不可用 - 現有版本的 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 上:
- 按 Windows 鍵。
- 開始輸入“環境”。
- 當它出現時,選擇“編輯您帳戶的環境變數”。
其餘的應該是不言自明的。
答案3
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?: ___