¿Cómo configurar mi shell predeterminado en Mac?

190

No me gusta volver a escribir el pescado cada vez que inicio la terminal. Quiero fishencendido por defecto. ¿Cómo puedo configurar Fish Shell como mi shell predeterminado en una Mac?

Léo Léopold Hertz 준영
fuente

Respuestas:

31

Estos son aplicables a MacOS Sierra 10.12.5 (16F73) y probablemente a algunas otras versiones recientes y futuras de MacOS.

  1. chshno es suficiente para cambiar el shell predeterminado. Asegúrese de presionar Command+ ,mientras su terminal está abierta y cambie la opción 'Shells open with' a 'Shell de inicio de sesión predeterminado'.

  2. En caso de bash, asegúrese de ejecutar echo $BASH_VERSIONpara confirmar que está ejecutando la versión prevista de bash. bash --versionNo le da la información correcta.

Tushar Vazirani
fuente
3
Como esta respuesta es la aceptada, quizás en lugar de ser un apéndice presumiblemente a otra respuesta , podría hacer que sea una respuesta completa para incluir el apéndice.
Jason R. Coombs
Esto se responde en los documentos ahora.
reergymerej
@ JasonR.Coombs Done.
Tushar Vazirani
1
Actualización: Ahora podemos establecer shell por defecto en Preferencesde Terminal.app . Ver esta respuesta de Pankaj.
Basil Bourque
He mencionado el atajo de teclado para preferencias.
Tushar Vazirani
241

1. sudo nano / etc / shells ingrese la descripción de la imagen aquí

2. agregue / usr / local / bin / fish a su lista de conchas ingrese la descripción de la imagen aquí

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

usuario391339
fuente
2
Y debe cambiar la Shell open with: Default login shellconfiguración de Terminal.app
Tikhonov Alexander
77

Puede usar chsh para cambiar el shell de un usuario.

Ejecute el siguiente código, por ejemplo, para cambiar su shell a Zsh

chsh -s /bin/zsh

Como se describe en la página de manual, y por Lorin, si el depósito no es conocida por el sistema operativo, hay que añadirlo a su lista conocida: /etc/shells.

Aif
fuente
13
Intenté y obtuve una chsh: /usr/local/bin/fish: non-standard shell solución: agregarlo a / etc / shells como lo describe la respuesta de @ lorin-hochstein a continuación
lmsurprenant el
dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Cambio de shell para dbright. Contraseña para dbright: chsh: / Users / dbright / sys / bin / bash: shell no estándar dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 rueda raíz 179 23 de septiembre de 2007 / etc / shells
don bright
Hum, recientemente he intentado chsh que funcionaba como un usuario simple (sin -sembargo). Lo intentaré de nuevo pronto.
Aif
73

Desde la terminal:

  1. Agregue Fish a /etc/shells, que requerirá una contraseña administrativa:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Haga que Fish sea su shell predeterminado con chsh:

    chsh -s /usr/local/bin/fish
    

De Preferencias del sistema:

  1. Usuario y grupos → ctrl-clic en Usuario actual → Opciones avanzadas ...

  2. Cambiar el shell de inicio de sesión a /usr/local/bin/fish

    shell de inicio de sesión

  3. Presione OK, cierre sesión y vuelva a iniciarla

Paolo Moretti
fuente
8
Tuve que hacer un pequeño ajuste al paso 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic
Solo otra forma de hacer lo mismo que @purpletonic mencionóecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach
20

Aquí hay otra forma de hacerlo:

Suponiendo que lo instaló con MacPorts, lo que se puede hacer haciendo:

sudo port install fish

Su caparazón se ubicará en /opt/local/bin/fish.

Debe decirle a OSX que este es un shell válido. Para hacerlo, agregue esta ruta al final de/etc/shells archivo.

Una vez que haya hecho esto, puede cambiar el shell yendo a Preferencias del sistema -> Cuentas. Haga clic en el candado para permitir cambios. Haga clic derecho en la cuenta y elija "Opciones avanzadas ...". En el campo "Shell de inicio de sesión", agregue la ruta para pescar.

Lorin Hochstein
fuente
¡Gracias! esto funcionó muy bien y convirtió a Fish en mi terminal predeterminada en todas partes. solo cambiarlo en la terminal como una de las otras respuestas hizo que la terminal me preguntara cada vez que cerraba una ventana y chsh simplemente no funcionaba para mí.
jasongregori
12

Lo único que funcionó para mí fue una combinación de todos estos métodos.

  1. Primero tuve que agregar pescado al /etc/shellsarchivo

  2. Entonces corrí chsh -s /usr/local/bin/fish

  3. Finalmente, escribí Command+ ,y agregué /usr/local/bin/fisha la ruta predeterminada allí

Solo después de haber hecho las tres cosas, los peces comenzaron a aparecer como el valor predeterminado para las nuevas ventanas de terminal.

quaintm
fuente
9

Mac OS X: cómo cambiar el terminal Shell

Gumbo
fuente
2
Aconsejaría preferir este enfoque y no cambiar su shell OSX predeterminado. He tenido "instalaciones infinitas" en iWorks, por ejemplo, debido a los scripts de instalación que suponen que tiene un shell compatible con SH (no es el caso de ZSH en mi caso).
Cyber ​​Oliveira
8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. Abre tu terminal y presiona command+, (coma). Esto abrirá una ventana de preferencias.
  2. La primera pestaña es 'General'.
  3. Busque la configuración 'Los shells se abren con' y elija la segunda opción que necesita la ruta completa al shell.
  4. Pegue el enlace a su comando de pez, que generalmente es /usr/local/bin/fish.

Vea esta captura de pantalla donde zshse configura como predeterminada.

captura de pantalla de ingresar <code> / bin / zsh </code> en las preferencias de Terminal.app

Estoy usando macOS Sierra . También funciona en macOS Mojave .

Pankaj
fuente
2
¡Al final! ¡Una solución que funciona para un usuario que no es sudo!
Ébe Isaac
7

En macOS Mojave tuve que hacer lo siguiente (usando zsh como ejemplo):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
MagicDude4Eva
fuente
Nota: También puede usar este método exacto para obtener la última versión de bash. stackoverflow.com/a/55011144/117471 Se me ocurrió casi el mismo código por mi cuenta.
Bruno Bronosky
1
No es necesario instalarlo zsh. Ya presente en macOS Mojave. Incluido en Mojave, y por defecto en Catalina.
Basil Bourque
5

Cómo obtener la última versión de bash en macOS moderno (probado en Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Entonces estás listo para completar la pestaña de estilo vim, que solo está disponible en bash> = 4 (la versión actual brewes 5.0.2

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"
Bruno Bronosky
fuente
4

el chshprograma te permitirá cambiar tu shell predeterminado. Querrá la ruta completa al ejecutable, por lo que si su shell es fishasí, querrá que proporcione la salida dada cuando escribewhich fish .

Verá una línea que comienza con " Shell:". Si nunca lo ha editado, lo más probable es que diga " Shell: /bin/bash". Reemplace esa /bin/bashruta con la ruta a su shell deseado.

rejj
fuente
4

Cuando esté en la terminal, abra las preferencias de la terminal usando Command+, .

En la pestaña Configuración, seleccione uno de los temas y elija la pestaña del shell a la derecha.

Puede configurar el comando de inicio automático fish.

holsety
fuente
4

Este trabajo para mí en la nueva instalación de mac osx (sierra):

  1. Definir usuario actual como propietario de shells
sudo chown $(whoami) /etc/shells
  1. Agregar pescado a / etc / conchas
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Haga que Fish sea su shell predeterminado con chsh
chsh -s /usr/local/bin/fish
  1. Redefinir la raíz como propietario de conchas
sudo chown root /etc/shells
ZecKa
fuente
2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

simplemente cambie ese valor (con el comando de escritura dscl).

Ordiel
fuente
Recibo este error cuando ejecuto lee leeg: <dscl_cmd> DS Error: -14136 (eDSRecordNotFound)
Léo Léopold Hertz 준영
1
Si. Eso es porque leeg es mi nombre de usuario, no el tuyo: P
0

En caso de que tenga problemas con las otras formas, trabajó en Mac Mojave, pero en general debería funcionar.

which fish

agregue la ruta de salida a "Preferencias del sistema> Usuarios y grupos> haga clic con el botón derecho en el usuario, Opciones avanzadas" Pegue el resultado del cual en "Shell de inicio de sesión:"

Sluck
fuente
0

Para cambiar su shell predeterminado en mac ejecute lo siguiente:

chsh -s <name-of-shell>

La lista de conchas que puede elegir son:

  1. / bin / bash
  2. / bin / csh
  3. / bin / dash
  4. / bin / ksh
  5. / bin / sh
  6. / bin / tcsh
  7. / bin / zsh

así que si desea cambiar al shell / bin / zsh, su comando se verá así:

chsh -s /bin/zsh

Puede ver todos los shells disponibles en su sistema ejecutando:

cat /etc/shells
Chavez Harris
fuente