3 votos

Terminal.app: ¿problema de cambio de comportamiento del shell?

Estoy teniendo problemas para establecer el shell por defecto de Terminal.app. Parece que funciona utilizando una utilidad de línea de comandos que establece el shell para la cuenta, sin embargo no en el diálogo de Terminal.app que es para cada sesión. Encuentro que si establezco el sistema de shell con 'chsh', la variable $SHELL en Terminal.app refleja correctamente el shell. Si cambio el shell sólo en Terminal.app, $SHELL no refleja correctamente el shell, sin embargo el shell parece ser el correcto en ejecución. He probado esto en una cuenta temporal para descartar otras interacciones y tiene el mismo comportamiento.

Este es un caso de uso: Cuando ejecuto en Terminal.app:

$ chsh -s /bin/ksh

e invocar Terminal.app, el shell se cambia correctamente:

$ echo $SHELL
/bin/ksh

El problema es que si intentas algo similar a través de Terminal.app->Preferencias->General->Shells open with->Command->/bin/ksh

$ echo $SHELL
/bin/bash

Sin embargo, cuando intento completar el comando con TAB, refleja el comportamiento de ksh.

Por lo tanto, mi sospecha es que hay algo que anula la variable de entorno SHELL donde siempre es SHELL=/bin/bash, a pesar de que el shell es diferente a eso.

¿Alguien sabe si Apple tiene un error aquí?

1voto

Martin R Puntos 181

La siguiente información está tomada de

en Unix y Linux, que también se aplica a MacOS.

Usted son ejecutando el shell Korn si la preferencia Terminal está configurada como /bin/ksh . La salida

$ echo $SHELL
/bin/bash

es engañoso porque el SHELL es establecida por el proceso de inicio de sesión como

El shell del usuario, tal y como se especifica en la base de datos de contraseñas.

(En MacOS es una base de datos de usuarios y no el /etc/passwd como en Linux, donde se almacena esa información, pero eso no importa).

Puede escribir

$ echo $0
-ksh

o

$ echo $KSH_VERSION
Version AJM 93u+ 2012-08-01

para verificar que está ejecutando el shell Korn.

Configuración de la cáscara a través de

$ chsh -s /bin/ksh

establece el shell de inicio de sesión en la base de datos de usuarios, y luego SHELL se ajusta en consecuencia:

$ echo $SHELL
/bin/ksh

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