Jak ustawić rybę jako domyślną powłokę?

110

Czy istnieje sposób na ustawienie ryb jako domyślnej powłoki w remiksie netbooka Ubuntu? Włączyłem mój .bashrc, aby uruchomić ryby, co działa dobrze, ale ubuntu rozpoznaje je jako ryby działające wewnątrz bash, co oznacza, że ​​kiedy próbuję zamknąć powłokę, ostrzega mnie, że zadanie wciąż działa.

Nie wyskakuje jako nowa aplikacja, więc nie mogę przypiąć go do paska jak zwykłej aplikacji.

Xodarap
źródło

Odpowiedzi:

151

Możesz ustawić rybę jako domyślną powłokę, uruchamiając

chsh -s `which fish`

Aby to zrobić dla innego użytkownika, po prostu dodaj nazwę użytkownika na końcu polecenia i użyj sudo.

Następnie wyloguj się i zaloguj ponownie.

(Aby ustawić to z powrotem bash, musisz oczywiście użyć składni Fish, tak jak to chsh -s (which bash))

ajmitch
źródło
3
Wydaje mi się, że to nie działa. Nie powoduje błędu, ale wydaje się, że nie działa, nawet jeśli po prostu otworzę nową kartę. jakieś pomysły?
Xodarap,
16
Może być konieczne wylogowanie i ponowne zalogowanie - właśnie wypróbowałem to na czystej maszynie wirtualnej i zadziałało.
ajmitch
1
Jak to cofnąć?
knutole
7
Nie uruchamiaj przypadkowo tego polecenia za pomocą, w sudoprzeciwnym razie zmienisz root root.
Stephen Niedzielski
2
Lub chsh -s (which fish)z wnętrza ryby.
Wtower
30
usermod -s /usr/bin/fish username

Jednak musi być uruchamiany jako root.

Spowoduje to trwałą zmianę powłoki dla określonego użytkownika.

sweetfa
źródło
1
Wiem, że to nie jest Ubuntu, ale chciałem skomentować: byłem na CentOS i dostałem Authentication Failedbłąd, próbując zmienić powłokę z użytkownikiem innym niż root i po intensywnych poszukiwaniach, aby spróbować to zrozumieć, to była jedyna rzecz to się udało. Dzięki!
CWSpear
Tak to będzie działać na większości smaki UNIX, które mają usermod i ryby na muszli lub zmienić powłokę na cokolwiek chcesz smak
sweetfa
Zrobiłem to i teraz terminal już się nie uruchamia. Pojawia się komunikat „Wystąpił błąd podczas tworzenia procesu potomnego dla tego terminala”, „Nie można wykonać procesu potomnego” / usr / bin / fish ”(błąd wejścia / wyjścia). Jak mogę to cofnąć?
ptkato
Wydaj to samo polecenie co root, ale użyj bash zamiast ryb jako powłoki.
sweetfa
21

Właśnie dodałem wiersz fishna końcu mojego .bashrc.

Kyle D.
źródło
1
To najprostsze i najlepsze rozwiązanie, IMO;)
Ben Marten,
9
Przepraszamy, ale nie jest wydajny. :) To załaduje twoją rybą skorupę, ale na wierzch twojej bash działa.
M. Junaid Salaat
1
Dlaczego bash musi być wydajny? @ M.JunaidSalaat
codenamejames
Na pierwszy rzut oka wygląda to na brudny hack, ale po pewnym czasie korzystania z komputera z zestawem ryb jako domyślną powłoką z chsh wróciłem do tego rozwiązania. Niektóre programy zakładają, że używasz bash i ulegnie awarii z powodu użycia składni bash na rybach. Do tej pory miałem takie problemy w i3wm i matlab.
Naheel
@codenamejames: To nie jest tak, że bash musi być skuteczny, ani że te kilka milisekund ma znaczenie, ale nie ma nic do stracenia, więc czemu nie poprawić? Zwłaszcza tutaj, gdzie doradzamy innym ludziom. Powinniśmy wiedzieć lepiej
swalog
13

Zgadzam się z chshprawidłową odpowiedzią. Jednak:

Jeśli uruchomisz chshi pojawi się błąd

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

po prostu dodaj lokalizację binarną ryby do /etc/shells.

Znaleziono tutaj .

jackbravo
źródło
Jest to konieczne w MacOS Mojave.
Dodekeract
2

W /etc/shellsdodaj /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

Potem chsh -s /usr/local/bin/fish.

dorycki
źródło