Как изменить оболочку по умолчанию на ZSH - chsh говорит «недопустимая оболочка»

36

Я установил ZSH на мою виртуальную машину, где я скомпилировал ее из исходного кода. Расположение ZSH - это /usr/local/bin/zshкогда я запускаю chsh -s /usr/local/bin/zshего вывод chsh: /usr/local/bin/zsh is an invalid shell. Я тоже попробовал это с sudo. Как я могу изменить это?

Зак Рассел
источник
Возможный дубликат Где я могу изменить мою оболочку?
Микель
6
@Mikel, нет, этот вопрос «я не знаю chsh», а не « chshне работает для меня».
CJM

Ответы:

49

Добавьте zsh к /etc/shells:

command -v zsh | sudo tee -a /etc/shells

Теперь вы можете использовать chsh для установки zsh в качестве оболочки:

sudo chsh -s "$(command -v zsh)" "${USER}"

Смотрите эту документацию: Изменение вашей оболочки входа

Biapy
источник
8

Вам нужно добавить /usr/local/bin/zshв /etc/shells.

Адам Ланг
источник
3

Во-первых, проверьте, zshуказан ли в качестве допустимой оболочки

cat /etc/shells

Если zshего нет в списке, установите его. Например, если вы используетеapt

sudo apt-get install zsh

Сделайте шаг 1 снова и увидите путь zsh. В моем случае оба /usr/bin/zshи /usr/zshуказаны. Как отметил в комментарии @ Stéphane Chazelas, если вы хотите скомпилировать и установить оболочку с нуля, обязательно добавьте путь в /etc/shells.

Изменить оболочку, используя

chsh -s /usr/bin/zsh

С man-страницы :

-s, --shell SHELLИмя новой оболочки входа пользователя. Установка этого поля в пустое заставляет систему выбирать оболочку входа по умолчанию.

Выйдите из системы и войдите снова.

Сб ям
источник
Да, если вы устанавливаете оболочку как часть пакета ОС, упаковка ОС обычно добавляет оболочку /etc/shells. Суть в том, что если вы компилируете и устанавливаете оболочку вручную, вам также необходимо добавить путь к /etc/shellsсебе вручную.
Стефан
Хорошая точка зрения. Я думал о менеджере пакетов, как «apt». Я отредактировал ответ, чтобы включить вашу точку зрения.
Сб Ям
По сути, это то, что уже два других ответа уже сказали.
Джефф Шаллер