Prawidłowa odpowiedź powinna była rozwiązać Twój problem:
chsh: / usr / bin / zsh: powłoka niestandardowa
Dzieje się tak, ponieważ chsh
akceptuje 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 zsh
jest to na twojej drodze. To rozwiązanie sprawdzi się również, jeśli na przykład zdecydujesz się zainstalować najnowszą wersję zsh
z 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 -l
wyś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/zsh
tam powoduje, że to działa?