Prawidłowa odpowiedź powinna była rozwiązać Twój problem:
chsh: / usr / bin / zsh: powłoka niestandardowa
Dzieje się tak, ponieważ chshakceptuje tylko powłoki zdefiniowane w pliku / etc / shells, co można zobaczyć czytając instrukcję dla chsh:
chsh zaakceptuje pełną ścieżkę do dowolnego pliku wykonywalnego w systemie. Jednak wyświetli ostrzeżenie, jeśli powłoka nie zostanie wymieniona w pliku / etc / shells.
Aby rozwiązać ten problem i ustawić zsh jako domyślną powłokę, powinieneś:
$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
Oczywiście zakładam, że zshjest to na twojej drodze. To rozwiązanie sprawdzi się również, jeśli na przykład zdecydujesz się zainstalować najnowszą wersję zshz brew install zsh.
EDYCJA (dzięki za ThisIsFlorianK za komentarz) :
W zależności od konfiguracji powłoki może pojawić się komunikat /etc/shells: Permission denied. Możesz znaleźć informacje na ten temat tutaj.
Aby to obejść, użyj zamiast tego:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
chsh -lwyświetla? (Jeśli to nie zadziała, jaka jest zawartość/etc/shells?) Czy na pewno to zawodzi, a nie tylko ostrzeżenie? Czy dodanie/usr/bin/zshtam powoduje, że to działa?