¿Por qué Terminal no respeta las preferencias?

Dec 10 2020

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 returna 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 pwdcomo la primera línea de .zshrcmuestra que el directorio ya está/home/<myuser>
  • He instalado y desinstalado algunas herramientas y proyectos que involucran nixrecientemente (incluido nix-darwin)

Metadatos:

OS        macOS Catalina 10.15.7 (19H2)
Terminal  2.10 (433)
zsh       5.7.1 (x86_64-apple-darwin19.0)

Respuestas

3 MarlonRichert Dec 28 2020 at 03:43

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_Terminalse llame o que pueden anular lo que intenta hacer:

  • Está iniciando Zsh con zsh -do zsh -f.
  • Tienes un archivo ${ZDOTDIR:-$HOME}/.zshenvo ${ZDOTDIR:-$HOME}/.zprofileen el que tienes setopt NO_rcsosetopt NO_globalrcs
  • El parámetro $TERM_PROGRAMno tiene el valor Apple_Terminal.
  • Zsh no tiene acceso de lectura a /etc/zshrc_Apple_Terminal.
  • Cuando /etc/zshrc_Apple_Terminalse obtiene, el parámetro $INSIDE_EMACSno es cero.
  • Usted define una función en precmdalgún momento después de /etc/zshrc_Apple_Terminal obtener el origen, que luego anula la definida por add-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í:
    cd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
    
    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 haciendo
    ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
    
  • Reinicie Zsh con exec zsh -vxy estudie la salida desde el principio para ver si /etc/zshrc_Apple_Terminalse obtiene y si algo posterior anula el precmdenlace que configura.