2014-03-12 67 views
10

我已經使用Cygwin很長一段時間了。我現在想從bash切換到魚。大家都在說你應該使用chsh -s /usr/bin/fish,但由於某種原因,chsh不適用於我。試圖修改我的Cygwin.bat文件也不起作用,並且也不會更改我的/etc/passwd文件。在Cygwin中設置默認外殼

我真的不明白髮生了什麼事情。有人可以幫我嗎?

+0

您是否將/ usr/bin/fish添加到/ etc/shells? –

+0

我做了,它沒有工作。 – Alex

回答

6

我隨機遇到同樣的問題,現在我爲您提供我的解決方案。

0-打開cygwin通過passwd文件mintty.exe

1-生成passwd文件手動(mkpasswd

$mkpasswd > /etc/passwd 

2-更改默認殼

$vim /etc/passwd 
user:*:1976XX:1971XX:U-user\user,S-1-5-21-XXXX:/home/user:/bin/fish 

3-重啓mintty.exe

+0

非常有幫助!謝謝 –

2

我不是確定這是一個合適的解決方案,但我只是將/usr/bin/zsh; exit添加到我的.bashrc文件的底部。您可以用/usr/bin/zsh代替您選擇的外殼的路徑。它似乎迄今爲止工作得很好。

13

嘗試編輯/etc/nsswitch.conf中,而不是/ etc/passwd文件

而不是創建一個passwd文件,其中的Cygwin recommends against ,你可以edit /etc/nsswitch.conf。添加或編輯下面一行:

 
db_shell: /usr/bin/fish 

這種方法的下/上側是,如果你有多個用戶,這個變化會影響所有的人。 up/up方面就是它很簡單。唯一的問題是你必須重新啓動Cygwin。

如果你在此更改後使用mkpasswd,它將爲允許登錄的所有用戶使用新的默認shell。


參考

mkpasswd文檔這樣說:

不要使用此命令生成本地/ etc/passwd文件,除非你真的需要一個。有關更多信息,請參閱Cygwin用戶指南。

我真的不能找到在user's guide任何固體推理,比一提的是,你必須重新生成/etc/passwd/etc/group文件,如果你的用戶和組的改變,我想對方是一個足夠體面的理由。我可以說這個過程對於新手來說有點容易出錯。

4

SuperUser有一個更簡單的答案。在Windows中設置SHELL環境變量。將它設置爲您喜歡的外殼(例如/bin/tcsh)和新發布的shell應該使用它。

要設置環境變量:

  1. 轉到「系統」控制面板(右鍵單擊開始菜單,選擇「系統」)
  2. 點擊「高級系統設置」,在左側 - 列
  3. 從彈出的「系統屬性」窗口中,單擊「環境變量...」按鈕
  4. 在「用戶變量」或「系統變量」框中(取決於您是否想要改變隻影響你自己或所有用戶),點擊「新建...」按鈕。
  5. 在「變量名稱」框中鍵入「SHELL」,並在「變量值」框中鍵入到首選shell的路徑(相對於Cygwin文件系統)。
  6. 單擊三個打開的​​窗口上的確定保存您的更改。
1

如果通過運行Cygwin的ConEmu我發現最簡單的方法是替換命令行運行的魚,而不是默認的shell(設置 - > Startup->任務): ""c:\cygwin64\bin\fish.exe" --login -i"(請改相應的路徑到您的cygwin文件夾)