168 votos

Suprimiendo el mensaje verboso de zsh en MacOS Catalina

Sé que Catalina usa zsh como shell de inicio de sesión y shell interactivo por defecto, pero es muy molesto cuando abro iTerm.app o ejecuto el comando con /bin/bash Muestra un mensaje verboso como el que se muestra a continuación

$ /bin/bash
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

230voto

Josh Lee Puntos 53741

Encontré la solución en reddit . La solución también se menciona en la sección "Cómo usar una shell diferente sin cambiar la predeterminada" de este artículo de soporte de Apple: https://support.apple.com/en-us/HT208050/ .

Añade:

export BASH_SILENCE_DEPRECATION_WARNING=1

a $HOME/.bash_profile o $HOME/.profile y reiniciar el iTerm, el mensaje de advertencia ha desaparecido.

28 votos

Tenga en cuenta que esto también aparece en el enlace "Para más detalles" que hay en esa misma advertencia ;)

4 votos

Sólo un comentario - esto no me funcionó en ninguno de los dos .profile o .bash_profile en iTerm así que lo añadí a .bashrc que sí funcionó. Me da un poco de vergüenza haber buscado antes de leer el enlace del mensaje... :-)

0 votos

@scohe001 - Se ha actualizado la respuesta para hacer mención a esto

54voto

fred Puntos 11

Apple's /bin/bash es bastante anticuado (actualmente v3.2.57). Acabo de cambiar a usar el bash suministrado por homebrew (actualmente v5.0.18), que por cierto también eliminará esa advertencia de desaprobación.

Pasos:

  1. Instala el homebrew si aún no lo has hecho https://docs.brew.sh/Installation
  2. En una ejecución de terminal:

    brew update && brew install bash && sudo chsh -s /usr/local/bin/bash $(whoami)

0 votos

Esto no funcionó en mi actualización de Catalina con Homebrew: "GNU bash, versión 5.0.11(1)-release (x86_64-apple-darwin18.6.0)". Tuve que establecer la variable de entorno.

2 votos

Trabajé en Big Sur. Fui un poco perezoso y lo hice: sh brew update && brew install bash && sudo chsh -s `which bash` $(whoami) Pero no esperaría que eso cambiara nada. No he necesitado poner BASH_SILENCE_DEPRECATION_WARNING .

2 votos

Si añades el nuevo bash a la lista de shells estándar aprobados en /etc/shells, entonces no necesitarás ser un superusuario para chsh -s /usr/local/bin/bash . Con el sudo chsh ... el superusuario puede establecer su shell a cualquier cosa.

15voto

nverkland Puntos 41

Encontré que haciéndome Root y luego añadiendo la supresión de la depresión en /etc/profile era más fiable. Ya estaba usando ZSH y recibía la advertencia cada vez que abría una nueva consola. Terriblemente molesto. El archivo /etc/profile ahora se lee como sigue:

# System-wide .profile for sh(1)
export BASH_SILENCE_DEPRECATION_WARNING=1

if [ -x /usr/libexec/path_helper ]; then
        eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
        [ -r /etc/bashrc ] && . /etc/bashrc
fi

0 votos

Esta es una buena forma de desactivar la advertencia para todos los usuarios del ordenador. ¡Mi elección también!

2 votos

Tenga en cuenta que en MacOS 10.15 "Catalina" el /etc/profile tiene permisos 444. Cambie los permisos a 644 como Root antes de editar el archivo y vuelva a cambiar a 444 después si lo desea.

9voto

yoliho Puntos 340

He investigado un poco y he encontrado el texto extra (he leído el URL dado en el mensaje pero se perdió la línea para export BASH_SILENCE_DEPRECATION_WARNING=1 )

El problema es que el texto que se ve proviene de la versión de Apple de /bin/bash

strings /bin/bash | grep default muestra el texto.

Así que para usar bash añadiría un bash más nuevo de otra fuente y lo usaría en chsh. Yo usaría un bash diferente de todos modos, ya que la versión de Apple tiene más de 10 años.

Mirando a Apple código para MacOS 11.3 en shell.c (parece que Apple aún no lo ha publicado para 11.4)

Apple ha añadido entre otras cosas

#ifdef __APPLE__
  if (interactive_shell && !act_like_sh) {
      char const * const silence_warning = getenv("BASH_SILENCE_DEPRECATION_WARNING");
      if (!silence_warning || *silence_warning != '1') {
          struct stat sbuf;
          if (stat("/bin/zsh", &sbuf) == 0) {
              fprintf(stderr, "\n"
                              "The default interactive shell is now zsh.\n"
                              "To update your account to use zsh, please run `chsh -s /bin/zsh`.\n"
                              "For more details, please visit https://support.apple.com/kb/HT208050.\n");
          }
      }
  }
#endif

Por lo tanto, la configuración de BASH_SILENCE_DEPRECATION_WARNING eliminará esto (pero vea el comentario sobre que bash es una versión antigua, por lo que no lo aconsejo)

0 votos

Gracias. Estuve buscando por ahí /etc/ tratando de encontrar de dónde viene esa advertencia y qué analiza para BASH_SILENCE_DEPRECATION_WARNING y como muestra, ese mensaje está codificado en el sistema MacOS /bin/bash

0 votos

Otra forma de evitar la advertencia que se ha incorporado a /bin/bash es chsh a cualquier shell que no sea autodespreciable, como los enumerados en /etc/shells

1 votos

@DaveX Sí, pero entonces usted no está en bash - así que una pregunta diferente - Si desea mantener en bash instalar una nueva versión como en apple.stackexchange.com/a/400546/237

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X