Вам нужно добавить эту оболочку в /etc/shells . Руководство гласит:
/etc/shells - это текстовый файл, который содержит полные имена допустимых оболочек для входа. Этот файл используется chsh(1) и доступен для запроса другими программами.
Помните, что существуют программы, которые обращаются к этому файлу, чтобы узнать, является ли пользователь обычным пользователем; например, демоны FTP традиционно запрещают доступ пользователям с оболочками, не включенными в этот файл.
В моем Kubuntu это содержимое /etc/shells:
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/bin/zsh
/usr/bin/zsh
/usr/bin/fish
/bin/tcsh
/usr/bin/tcsh
Как вы можете видеть, его формат довольно очевиден. В моем случае fish указывается как /usr/bin/fish . Убедитесь, что правильный путь в вашем случае - /bin/fish и добавьте его в свой файл.
Обратите внимание, что лучше использовать chsh для изменения оболочки входа в систему, а не редактировать /etc/passwd вручную. Если вы сделали
chsh -s /bin/fish
вы, вероятно, получите
chsh: /bin/fish is an invalid shell
Исследование этой проблемы (с man 1 chsh), вероятно, покажет вам существование /etc/shells .
Инструмент предназначен для запуска непривилегированными пользователями. Если содержимое файла /etc/shells (которым управляет root) является нормальным, пользователи обычно не могут себя заблокировать. Отредактировав /etc/passwd вы можете не только заблокировать себя, как вы; Вы можете (по ошибке) сломать больше.