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.


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))


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.


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.


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 .


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.