題 如何將Mac OS X上的登錄Shell從bash更改為zsh?


我正在嘗試更改Mac OS X的登錄Shell bash 至 zsh。我知道了 它可以在Mac OS X Leopard中使用,但對於OS X Lion,我找不到辦法。我真的希望可以將Login shell從bash更改為其他東西。我不確定在哪裡尋找。


82
2017-11-28 21:34


起源


將shell更改為zsh之後,我仍然需要手動啟動zsh。退出沒有幫助。然後我將zsh更改為最高的登錄shell。退出並在那裡。
如果沒有別的,你可以隨時修改.bashrc來查找和執行zsh。 if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi。提示,在修改shell啟動腳本時,請確保保持shell運行並在另一個窗口中啟動一個新的 - 如果你打破它,你仍然可以輕鬆修復它。 - Dan Pritts


答案:


您可以通過以下命令更改用戶shell:

chsh -s /bin/zsh

注意:要為非標準shell更改它,請確保已將其路徑添加到 /etc/shells 文件。


90
2017-11-28 21:38



我用Homebrew安裝了一個更新版本的zsh,它將zsh放入 /usr/local/bin/zsh。不幸的是,chsh不允許這樣說 chsh: /usr/local/bin/zsh: non-standard shell。在這種情況下,Daniel Beck的答案是一個合適的解決方案。 - adam_0
如果您遇到非標準shell的問題,我認為您應該能夠添加 /usr/local/bin/zsh 至 /etc/shells 它應該解決這個問題。 - Mike Meyers
自製的zsh安裝信息確實建議你將它添加到/ etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells. - George
有時不起作用。 @ frank的回答確保了它 - oliverbarnes
@Awesome_girl默認情況下, /etc/shells 由root(超級用戶)擁有,只能寫。例如,您可以使用 sudo vi /etc/shells 使用 sudo (小號UPER üSER 做)運行 vi 編輯器編輯 /etc/shells。我剛剛在我的系統上進行了測試,並確認它不受系統完整性保護的保護,因此您應該能夠以root用戶身份進行編輯,而無需跳過箍來禁用SIP。 - Spiff


有趣的是,你在問題中鏈接的方法相同 仍然 在OS X Lion中通過Sierra(10.12)。唯一的區別是:首選項窗格已命名 用戶和組 代替 帳號

  1. 打開“系統偏好設置”→“用戶和組”。
  2. 除非鎖定圖標已解鎖,否則請單擊鎖定圖標並進行身份驗證。
  3. 在上下文中單擊用戶名列表中的用戶   (按住 控制 單擊時鍵,或右鍵單擊右鍵雙鍵鼠標)。
  4. 在上下文菜單中,選擇“高級選項...”。
  5. 在出現的工作表中選擇“登錄shell”。

“高級選項”屏幕頂部的註釋   聲稱必須重新啟動才能使更改生效,   但你真的只需要退出並重新登錄。

enter image description here


48
2017-12-01 17:21



確認這適用於Mountain Lion,以及使用您可能自行安裝的“非標準shell”(或安裝Homebrew)。 - adam_0
確認仍然在優勝美地10.10工作。 - ecnepsnai
右鍵單擊用戶名以顯示包含“高級選項”的菜單。這花了我幾分鐘才找到。 - pdwalker
為什麼強迫某人去異地收集所有信息才能得到答案?因此評論以防其他人做出相同的假設,即答案在這裡,而不是在這里和那裡。 - pdwalker
@jvriesem實際上,確實如此。我的猜測是你跳過第2步。 - Daniel Beck♦


要么:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

10
2017-11-25 09:52



你能解釋為什麼這回答了這個問題嗎? - ChrisF
一定要運行它 後  brew install zsh。 - mmell
另外,請注意通過自製軟件安裝的zsh的路徑是不同的。我這樣做: sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh) - metakermit
警告:如果您複製/粘貼它而不先檢查zsh的路徑,這將破壞您的shell。做metakermit代替做什麼。 - radixhound


如果有人想知道相同的問題發生在macOS Sierra上並且以下命令允許我更改shell而沒有問題:

chpass -s /usr/local/bin/zsh

1
2017-11-25 07:02



這複製了另一個答案,並沒有添加任何新內容。請不要發布答案,除非您確實有新的貢獻。 “chfn和chsh是chpass的同義詞。” - DavidPostill♦