¿Por qué Terminal no respeta las preferencias?
En algún momento de la última semana, mi Terminal dejó de respetar la configuración "Nuevas pestañas abiertas con: Mismo directorio de trabajo". La prueba con "Nuevas ventanas ..." dio el mismo resultado.
Mi caparazón es zsh.
Pude hacer que esto funcionara siguiendo una respuesta aquí de Dan Rosenstark https://apple.stackexchange.com/a/340778/398648
# http://superuser.com/a/315029/4952
# Set Apple Terminal.app to resume directory... still necessary 2018-10-26
if [[ $TERM_PROGRAM == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]] {
function chpwd {
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
chpwd
}
Pero: no sé cómo pude haber determinado esto por mí mismo, o cómo pude haber depurado un problema similar .
Cualquier consejo o truco para descubrir cuáles son esos pasos iniciales de Terminal sería muy apreciado.
Cosas que no funcionaron:
- Alternar la configuración para Nueva pestaña o Nueva ventana
- Cambiar el nombre o la adición
return
a la primera línea de.zshrc
,.zsh*
archivos - Todas las sugerencias en la pestaña Abrir nueva Terminal en el directorio de trabajo actual no funcionan
Otra información potencialmente útil:
- La configuración "Mismo perfil" / "Perfil predeterminado" se respeta cuando se cambia
- Agregar
pwd
como la primera línea de.zshrc
muestra que el directorio ya está/home/<myuser>
- He instalado y desinstalado algunas herramientas y proyectos que involucran
nix
recientemente (incluidonix-darwin
)

Metadatos:
OS macOS Catalina 10.15.7 (19H2)
Terminal 2.10 (433)
zsh 5.7.1 (x86_64-apple-darwin19.0)
Respuestas
Si hace clic en "Secuencia de escape ..." en esa captura de pantalla, podrá ver lo siguiente:

Sin embargo, lo que esto no le dice es que esto normalmente se soluciona en el archivo /etc/zshrc_Apple_Terminal
, al que se llama desde /etc/zshrc
. Hay varias cosas que pueden evitar que /etc/zshrc_Apple_Terminal
se llame o que pueden anular lo que intenta hacer:
- Está iniciando Zsh con
zsh -d
ozsh -f
. - Tienes un archivo
${ZDOTDIR:-$HOME}/.zshenv
o${ZDOTDIR:-$HOME}/.zprofile
en el que tienessetopt NO_rcs
osetopt NO_globalrcs
- El parámetro
$TERM_PROGRAM
no tiene el valorApple_Terminal
. - Zsh no tiene acceso de lectura a
/etc/zshrc_Apple_Terminal
. - Cuando
/etc/zshrc_Apple_Terminal
se obtiene, el parámetro$INSIDE_EMACS
no es cero. - Usted define una función en
precmd
algún momento después de/etc/zshrc_Apple_Terminal
obtener el origen, que luego anula la definida poradd-zsh-hook
.
Qué puede hacer para depurar:
- Inicie una subshell sin archivos de configuración no globales y vea si el error también ocurre allí:
Si el problema no ocurre en esta subcapa, significa que el problema está en algún lugar de sus archivos de puntos no globales. Puede obtener una lista de estos archivos haciendocd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
- Reinicie Zsh con
exec zsh -vx
y estudie la salida desde el principio para ver si/etc/zshrc_Apple_Terminal
se obtiene y si algo posterior anula elprecmd
enlace que configura.