4 votos

¿Por qué iTerm ya no fuente ~/.bash_profile, pero Mac Terminal sí lo hace?

Esto debe ser algo muy simple, pero no puedo entenderlo. Hasta hace poco, iTerm siempre implementaba correctamente .bash_profile que contiene:

Sellotape:~ mnewman$ cat .bash_profile
## .bash_profile - Asegúrate de que .bashrc y .profile sean leídos

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

if [ -f ~/.profile ]; then
    source ~/.profile
fi

.profile tiene esta línea importante de MacPorts:

export PATH="/opt/local/bin:/opt/local/sbin:$PATH"

Esto es lo que dice Terminal:

Sellotape:~ mnewman$ echo $SHELL
/bin/bash
Sellotape:~ mnewman$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands

Y esto es lo que dice iTerm:

Sellotape:~ mnewman$ echo $SHELL
/bin/bash
Sellotape:~ mnewman$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin

Configuración de iTerm>Perfiles>General>Por defecto tiene: comando /bin/bash

(También probé con Shell de inicio de sesión, pero eso tampoco funcionó.)

¿Qué he hecho para estropear iTerm?

6voto

Marc Wilson Puntos 146

iTerm no fuentea tus archivos de inicio de shell. Es un emulador de terminal, no un shell.

El shell que ejecutas dentro de iTerm fuentea tus archivos de inicio de shell.

Además, mirar el valor de $SHELL es más o menos irrelevante. El contenido de $SHELL es cuál es tu shell de inicio de sesión, no en qué shell te encuentras actualmente.

Ejemplo. Mi shell de inicio de sesión es ksh. Sin embargo...

$ echo $KSH_VERSION
Versión AJM 93u+m/1.1.0-alpha+e9182bd6 2023-09-24   <-- sí, este es ksh
$ echo $SHELL
/usr/local/bin/ksh                                  <-- y $SHELL está de acuerdo
$ bash                                              <-- ahora inicia bash
$ echo $KSH_VERSION
                                                    <-- ya no estamos en ksh
$ echo $SHELL
/usr/local/bin/ksh                                  <-- ¡espera un momento!
$ echo $BASH_VERSION
3.2.57(1)-release                                   <-- ah, esto *es* bash
$

Así que.

Bash solo lee .bash_profile para shells de inicio de sesión. Tampoco lee .profile si puede encontrar .bash_profile, lo cual siempre he pensado que está más que un poco roto.

Por lo tanto, iTerm no está iniciando bash como un shell de inicio de sesión, lo que significa que tu combinación particular de archivos de inicio no se están leyendo de la manera en que esperas, mientras que Terminal sí lo está haciendo.

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