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


110

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

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


Ответы:


151

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

chsh -s `which fish`

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

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

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


3
Это не похоже на работу для меня. Это не выдает ошибку, но, похоже, не работает, даже если я просто открываю новую вкладку. есть идеи?
Xodarap

16
Возможно, вам придется выйти и снова войти - я только что попробовал это на чистой виртуальной машине, и это сработало.
ajmitch

1
Как вы установите его обратно?
Knutole

7
Не запускайте эту команду случайно, sudoиначе вы замените корневую оболочку.
Стивен Недзельски

2
Или chsh -s (which fish)изнутри рыба.
Wtower

30
usermod -s /usr/bin/fish username

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

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


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.

Нашел здесь .


Это необходимо сделать на 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.