Как установить fish в качестве оболочки по умолчанию?

110

Есть ли способ установить fish в качестве оболочки по умолчанию в ремиксе для нетбуков Ubuntu? Я вставил свой .bashrc для запуска fish, который работает нормально, но ubuntu распознает его как рыбу, бегущую внутри bash, что означает, что когда я пытаюсь закрыть оболочку, он предупреждает меня о том, что задача все еще выполняется.

Оно не появляется как новое приложение, поэтому я не могу прикрепить его к панели, как обычное приложение.

Xodarap
источник

Ответы:

151

Вы можете установить рыбу в качестве оболочки по умолчанию, запустив

chsh -s `which fish`

Чтобы сделать это для другого пользователя, просто добавьте имя пользователя в конце команды и используйте sudo.

Затем выйдите и вернитесь.

(Чтобы установить его обратно bash, вам, конечно, нужно использовать синтаксис Fish chsh -s (which bash))

ajmitch
источник
3
Это не похоже на работу для меня. Это не выдает ошибку, но, похоже, не работает, даже если я просто открываю новую вкладку. есть идеи?
Xodarap
16
Возможно, вам придется выйти и снова войти - я только что попробовал это на чистой виртуальной машине, и это сработало.
ajmitch
1
Как вы установите его обратно?
Knutole
7
Не запускайте эту команду случайно, sudoиначе вы замените корневую оболочку.
Стивен Недзельски
2
Или chsh -s (which fish)изнутри рыба.
Wtower
30
usermod -s /usr/bin/fish username

Должен быть запущен от имени пользователя root.

Это навсегда изменит оболочку для указанного пользователя.

sweetfa
источник
1
Я знаю, что это не Ubuntu, но я хотел прокомментировать: я был на CentOS, и я получал сообщение Authentication Failedоб ошибке, пытаясь изменить оболочку с пользователем без полномочий root, и после тщательного поиска, чтобы попытаться выяснить это, это было единственное, что это сработало. Спасибо!
CWSpear
Да, он будет работать с большинством Unix-вкусов, в которых есть usermod и fish для оболочки, или изменить оболочку на любой другой, какой вы пожелаете
sweetfa
Я так и сделал, и теперь терминал больше не запускается. Я получаю сообщение "Произошла ошибка при создании дочернего процесса для этого терминала", "Не удалось выполнить дочерний процесс" / usr / bin / fish "(Ошибка ввода / вывода)". Как я могу отменить это?
ptkato
Выполните ту же команду, что и root, но используйте bash вместо fish в качестве оболочки.
sweetfa
21

Я просто добавил строку fishв конец моего .bashrc.

Кайл Д
источник
1
Это самое простое и лучшее решение, ИМО;)
Бен Мартен
9
Извините, но это не эффективно. :) Это загрузит вашу рыбную скорлупу, но в верхней части вашего бега.
М. Джунаид
1
Почему bash должен быть эффективным? @ M.JunaidSalaat
codenamejames
На первый взгляд это выглядит как грязный хак, но через некоторое время использования моего компьютера с рыбой, установленной в качестве оболочки по умолчанию с chsh, я вернулся к этому решению. Некоторые программы предполагают, что вы используете bash, и вылетает из-за использования синтаксиса bash для fish. До сих пор я сталкивался с такими проблемами в i3wm и matlab.
Нахил
@codenamejames: Дело не в том, что bash должен быть эффективным или что эти несколько миллисекунд имеют значение, но это случай, когда нечего терять, так почему бы не сделать это правильно? Особенно здесь, где мы даем советы другим людям. Надо знать лучше
свалог
13

Я согласен с chshправильным ответом. Тем не мение:

Если вы запускаете chshи получаете ошибку

/usr/local/bin/fish: non-standard shell

просто добавьте двоичное местоположение рыбы в /etc/shells.

Нашел здесь .

jackbravo
источник
Это необходимо сделать на MacOS Mojave.
Додекракт
2

В /etc/shellsдобавьте /usr/local/bin/fish:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

Потом chsh -s /usr/local/bin/fish.

Дориан
источник