Câu trả lời chính xác nên giải quyết được vấn đề của bạn:
chsh: / usr / bin / zsh: shell không chuẩn
Lý do của trường hợp này là vì chsh
sẽ chỉ chấp nhận các trình bao được xác định trong tệp / etc / shell, như bạn có thể thấy bằng cách đọc hướng dẫn cho chsh
:
chsh sẽ chấp nhận tên đường dẫn đầy đủ của bất kỳ tệp thực thi nào trên hệ thống. Tuy nhiên, nó sẽ đưa ra cảnh báo nếu trình bao không được liệt kê trong tệp / etc / shell.
Để giải quyết vấn đề này và đặt zsh làm trình bao mặc định, bạn nên:
$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
Rõ ràng, tôi cho rằng zsh
là con đường của bạn ở đây. Giải pháp này cũng sẽ hoạt động nếu bạn chọn cài đặt phiên bản mới nhất zsh
với brew install zsh
.
BIÊN TẬP (cảm ơn vì ThisIsFlorianK đã nhận xét) :
Tùy thuộc vào thiết lập trình bao của bạn, bạn có thể nhận được một thông báo /etc/shells: Permission denied
. Bạn có thể tìm thông tin về vấn đề này tại đây.
Để giải quyết vấn đề này, hãy sử dụng những điều sau thay thế:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
chsh -l
đầu ra? (Nếu điều đó không hiệu quả thì nội dung của nó là/etc/shells
gì?) Bạn có chắc điều này không thành công và không chỉ là cảnh báo? Thêm vào/usr/bin/zsh
đó có làm cho việc này hoạt động không?