在Ubuntu上安裝zsh時遇到 chsh: PAM: Authentication failure

今天要教別人一些SA的東西,趁睡覺前把以前寫的script重新順過一次

我在ubuntu 16.04 安裝zsh的指令如下

sudo apt install -y zsh git-core
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O – | zsh
chsh -s `which zsh`
sudo reboot

發現在執行到 sudo chsh -s which zsh 時會噴出以下錯誤

chsh: PAM: Authentication failure

這行指令目的是修改使用者的預設 shell 為 zsh,在網路上找到了各式各樣的解法
有人在bashrc內跑 exec zsh、也有人直接改 /etc/passwd的shell
這裡我採用的解法,是從zsh官方issue中一位開發者提供的解法

sudo vim /etc/pam.d/chsh

將 auth required pam_shells.so 這行註解掉後,再次執行 sudo chsh -s which zsh

重新ssh 登入後,預設shell就會變成zsh了!

–2017.03更新–

上面是舊的安裝方式,官方Repo有新的Script可以進行部屬

sudo apt install -y zsh

sh -c “$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

使用這份Script 即可順利安裝zsh ( 親測on Ubuntu 16.04 )

也不必將 /etc/pam.d/chsh 的 so檔註解掉囉

–2017.10更新–

如果是在AWS的環境,或者是每次重開都還是跳bash而非zsh的話
可以參考這個答案,如果還是不行的話
有一招很暴力的作法(不建議但有效) – 直接修改 /etc/passwd

sudo vim /etc/passwd

把使用者的預設登入shell改成zsh即可

your_username:x:1000:1000:,,,:/home/your_username:/usr/bin/zsh