Come posso impostare il pesce come shell predefinita?


110

C'è un modo per impostare fish come shell predefinita nel remix del netbook ubuntu? Ho inserito il mio .bashrc per eseguire il pesce, che funziona benissimo, ma Ubuntu lo riconosce come pesce che gira all'interno di bash, il che significa che quando provo a chiudere la shell mi avverte che un'attività è ancora in esecuzione.

Non si apre come una nuova applicazione, quindi non posso bloccarlo sulla mia barra come un'app normale.


Risposte:


151

È possibile impostare il pesce come shell predefinita eseguendo

chsh -s `which fish`

Per farlo per un altro utente, basta aggiungere il nome utente alla fine del comando e utilizzare sudo.

Quindi disconnettersi e accedere nuovamente.

(Per ripristinarlo bash, è necessario utilizzare la sintassi Fish ovviamente, in questo modo chsh -s (which bash))


3
Questo non sembra funzionare per me. Non dà un errore, ma sembra non funzionare, anche se ho appena aperto una nuova scheda. qualche idea?
Xodarap,

16
Potrebbe essere necessario disconnettersi e riconnettersi: l'ho appena provato su una macchina virtuale pulita e ha funzionato.
Ajjitch

1
Come si ripristina?
knutole,

7
Non eseguire accidentalmente questo comando con sudoo cambierete invece la shell di root.
Stephen Niedzielski,

2
O chsh -s (which fish)dall'interno del pesce.
Wtower,

30
usermod -s /usr/bin/fish username

Tuttavia, deve essere eseguito come root.

Questo cambierà la shell in modo permanente per l'utente specificato.


1
So che non è Ubuntu, ma volevo commentare: ero su CentOS e stavo ricevendo un Authentication Failederrore nel tentativo di cambiare la shell con un utente non root e dopo aver ampiamente cercato di provare a capirlo, questa era l'unica cosa ha funzionato. Grazie!
CWSpear

Sì, funzionerà sulla maggior parte dei sapori unix che hanno usermod e pesce per una conchiglia, o cambieranno la conchiglia con qualunque sapore tu voglia
sweetfa,

L'ho fatto e ora il terminale non si avvia più. Ottengo "Si è verificato un errore durante la creazione del processo figlio per questo terminale", "Impossibile eseguire il processo figlio" / usr / bin / fish "(errore di input / output)". Come posso annullarlo?
ptkato,

Emetti lo stesso comando di root ma usa bash invece di fish come shell.
Sweetfa,

21

Ho appena aggiunto la riga fishalla fine del mio .bashrc.


1
Questa è la soluzione più semplice e migliore, IMO;)
Ben Marten,

9
Siamo spiacenti, ma non è efficiente. :) Caricherà la tua conchiglia ma sopra la tua corsa di bash.
M. Junaid Salaat,

1
Perché bash deve essere efficiente? @ M.JunaidSalaat
codenamejames,

A prima vista questo sembra un trucco sporco, ma dopo un po 'di utilizzo del mio pc con fish impostato come shell predefinita con chsh sono tornato a questa soluzione. Alcuni programmi presumono che tu stia usando bash e andranno in crash a causa dell'utilizzo della sintassi bash sui pesci. Finora ho affrontato problemi del genere in i3wm e matlab.
Naheel,

@codenamejames: Non è che bash deve essere efficiente o che quei pochi millisecondi contano, ma non si tratta di nulla da perdere, quindi perché non correggerlo? Soprattutto qui, dove stiamo dando consigli ad altre persone. Dovremmo saperlo meglio
swalog

13

Sono d'accordo con la chshè la risposta corretta. Però:

Se esegui chshe ricevi un errore

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

aggiungi semplicemente la posizione binaria del pesce a /etc/shells.

Trovato qui .


Questo è necessario per fare su macOS Mojave.
Dodekeract,

2

In /etc/shells, aggiungi /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

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.