Zainstalowałem zsh na moim Macu. a teraz chcę, aby była to domyślna powłoka zamiast Bash. Ale wydaje mi się, że mam następujący błąd:
$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
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?/bin/zsh
?Odpowiedzi:
3 proste kroki:
which zsh
to daje ci drogę do zshchsh -s /bin/zsh
lub zastąp ścieżkę do twojego zsh, jeśli jest innaźródło
/usr/bin/zsh
aby/etc/shells
rozwiązać problem.Prawidłowa odpowiedź powinna była rozwiązać Twój problem:
Dzieje się tak, ponieważ
chsh
akceptuje tylko powłoki zdefiniowane w pliku / etc / shells, co można zobaczyć czytając instrukcję dlachsh
:Aby rozwiązać ten problem i ustawić zsh jako domyślną powłokę, powinieneś:
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
zbrew 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:źródło
/etc/shells: Permission denied
==> Zrób to zamiast tego:sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh
jest domyślnie dostępna z jakiegoś powodu. Chociaż nie ma nic złego w klikaniu wielu menu w celu osiągnięcia tego samego, jest to nie tylko nie do przenoszenia i podatne na błędy, ale także wprowadza w błąd, ponieważ ukrywa się przed użytkownikami, skąd pochodzi zmiana.Udało mi się to osiągnąć, wykonując następujące czynności:
echo $SHELL
źródło
/usr/local/bin/zsh
. Dlatego będziesz musiał edytować/etc/shells
w sudo i dodać wpis,/usr/local/bin/zsh
zanim będziesz mógł wybrać plik wykonywalny zsh, który hombrew zainstalowałNa moim MacBooku w pracy musiałem zrobić to:
Następnie musiałem utworzyć
.bash_profile
plik, aby mój terminal przełączał się na powłokę z za każdym razem, gdy go otwieram:Ostatni pomysł został zapożyczony stąd .
źródło