1

Я попробовал fish некоторое время, а затем я хотел установить ее в качестве оболочки по умолчанию. Я отредактировал /etc/passwd и изменил оболочку моего пользователя на /bin/fish .

Проблема в том, что я больше не могу войти. Я попытался через мой DM (SDDM), он сказал, что вход не удался при любом пароле, который я бросил, правильно или неправильно. Затем я попробовал через tty, получил те же результаты. Замена fish на оболочку, которую я имел в моем файле passwd похоже, исправила это.

Есть ли способ установить fish в качестве оболочки по умолчанию и при этом иметь возможность входа?

Я использую Manjaro Linux.

2 ответа2

2

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

1

Я считаю, что Linux требует, чтобы все действительные оболочки входа в систему были перечислены в /etc/shells . Добавьте fish в этот файл, прежде чем устанавливать его в качестве оболочки для входа. Обязательно используйте его полный правильный путь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .