¿Cómo configuro fish como shell predeterminado?

110

¿Hay alguna manera de configurar fish como el shell predeterminado en ubuntu netbook remix? Puse mi .bashrc para ejecutar fish, que funciona bien, pero ubuntu lo reconoce como peces que se ejecutan dentro de bash, lo que significa que cuando trato de cerrar el shell me advierte que una tarea aún se está ejecutando.

No aparece como una nueva aplicación, por lo que no puedo anclarlo a mi barra como una aplicación normal.

Xodarap
fuente
2
De las preguntas frecuentes oficiales: ¿Cómo hago que el pescado sea mi caparazón predeterminado?
Dennis

Respuestas:

151

Puede configurar fish como su shell predeterminado ejecutando

chsh -s `which fish`

Para hacerlo para otro usuario, simplemente agregue el nombre de usuario al final del comando y utilícelo sudo.

Luego cierre sesión y vuelva a iniciarla.

(Para volver a configurarlo bash, debe usar la sintaxis de Fish, por supuesto, de esta manera chsh -s (which bash))

ajmitch
fuente
3
Esto no parece funcionar para mí. No da un error, pero parece que no funciona, incluso si abro una nueva pestaña. ¿Alguna idea?
Xodarap
16
Puede que tenga que cerrar sesión y volver a iniciarla. Simplemente lo probé en una máquina virtual limpia y funcionó.
ajmitch
1
¿Cómo lo vuelves a poner?
knutole
77
No ejecutes accidentalmente este comando sudoo cambiarás el shell raíz.
Stephen Niedzielski
2
O chsh -s (which fish)desde adentro del pescado.
Wtower
30
usermod -s /usr/bin/fish username

Sin embargo, debe ejecutarse como root.

Esto cambiará el shell de forma permanente para el usuario especificado.

sweetfa
fuente
1
Sé que no es Ubuntu, pero quería comentar: estaba en CentOS y recibí un Authentication Failederror al tratar de cambiar el shell con un usuario no root y después de una búsqueda exhaustiva para tratar de resolverlo, esto fue lo único. eso funciono. ¡Gracias!
CWSpear
Sí, funcionará en la mayoría de los sabores de Unix que tienen usermod y pescado para una cáscara, o cambiará la cáscara al sabor que desee
sweetfa
Lo hice y ahora la terminal ya no se inicia. Obtengo "Hubo un error al crear el proceso secundario para este terminal", "Error al ejecutar el proceso secundario" / usr / bin / fish "(Error de entrada / salida)". ¿Cómo puedo deshacer eso?
ptkato
Emita el mismo comando que root pero use bash en lugar de fish como shell.
sweetfa
21

Acabo de agregar la línea fishal final de mi .bashrc.

Kyle D
fuente
1
Esa es la mejor y más simple solución, OMI;)
Ben Marten
99
Lo siento, pero no es eficiente. :) Cargará tu caparazón de peces pero encima de tu bash corriendo.
M. Junaid Salaat
1
¿Por qué bash necesita ser eficiente? @ M.JunaidSalaat
codenamejames
A primera vista, esto parece un truco sucio, pero después de un tiempo de usar mi PC con el conjunto de peces como el shell predeterminado con chsh volví a esta solución. Algunos programas suponen que está usando bash y se bloqueará debido al uso de la sintaxis de bash en peces. Hasta ahora enfrenté tales problemas en i3wm y matlab.
Naheel
@codenamejames: No es que bash deba ser eficiente, o que esos pocos milisegundos importen, pero es un caso de nada que perder, así que ¿por qué no hacerlo correctamente? Especialmente aquí, donde estamos dando consejos a otras personas. Deberíamos saberlo mejor
swalog
13

Estoy de acuerdo con el chshes la respuesta correcta. Sin embargo:

Si corres chshy recibes un error

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

simplemente agregue la ubicación binaria de pescado a /etc/shells.

Encontrado aquí .

jackbravo
fuente
Esto es necesario hacer en macOS Mojave.
Dodekeract
2

En /etc/shells, agregue /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

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

dorio
fuente