Вам нужно добавить эту оболочку в /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
вы можете не только заблокировать себя, как вы; Вы можете (по ошибке) сломать больше.