Warum berücksichtigt Terminal keine Präferenzen?

Dec 10 2020

Irgendwann in der letzten Woche hat mein Terminal die Einstellung "Neue Registerkarten öffnen mit: Gleiches Arbeitsverzeichnis" nicht mehr berücksichtigt. Tests mit "New Windows ..." ergaben das gleiche Ergebnis.

Meine Shell ist zsh.

Ich konnte dies zum Laufen bringen, indem ich einer Antwort von Dan Rosenstark folgte 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
}

Aber: Ich weiß nicht, wie ich das für mich selbst hätte bestimmen können oder wie ich ein ähnliches Problem hätte beheben können .

Alle Tipps oder Tricks, um herauszufinden, was diese ersten Schritte von Terminal sind, wäre sehr dankbar.

Dinge, die nicht funktionierten:

  • Einstellungen für neuen Tab oder neues Fenster umschalten
  • Das Umbenennen oder Hinzufügen returnbei der ersten Zeile .zshrc, .zsh*Dateien
  • Alle Vorschläge auf der Registerkarte Neues Terminal öffnen im aktuellen Arbeitsverzeichnis funktionieren nicht

Weitere potenziell nützliche Informationen:

  • Die Einstellungen "Gleiches Profil" / "Standardprofil" werden beim Ändern berücksichtigt
  • Das Hinzufügen pwdals erste Zeile .zshrczeigt das Verzeichnis bereits/home/<myuser>
  • Ich habe einige Tools und Projekte installiert und deinstalliert, die nixkürzlich (einschließlich nix-darwin)

Metadaten:

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

Antworten

3 MarlonRichert Dec 28 2020 at 03:43

Wenn Sie in diesem Screenshot auf "Escape-Sequenz ..." klicken, sehen Sie Folgendes:

Dies sagt Ihnen jedoch nicht, dass dies normalerweise in der Datei erledigt wird, von der /etc/zshrc_Apple_Terminalaus aufgerufen wird /etc/zshrc. Es gibt verschiedene Dinge, die verhindern können, dass /etc/zshrc_Apple_Terminalsie aufgerufen werden, oder die überschreiben können, was versucht wird:

  • Sie starten Zsh mit zsh -doder zsh -f.
  • Sie haben eine Datei ${ZDOTDIR:-$HOME}/.zshenvoder ${ZDOTDIR:-$HOME}/.zprofilein der Sie setopt NO_rcsoder habensetopt NO_globalrcs
  • Der Parameter $TERM_PROGRAMhat nicht den Wert Apple_Terminal.
  • Zsh hat keinen Lesezugriff auf /etc/zshrc_Apple_Terminal.
  • Bei /etc/zshrc_Apple_Terminalder Beschaffung ist der Parameter $INSIDE_EMACSungleich Null.
  • Sie definieren eine Funktion precmdirgendwann nach /etc/zshrc_Apple_Terminal der Beschaffung, die dann die durch definierte Funktion überschreibt add-zsh-hook.

Was können Sie tun, um zu debuggen:

  • Starten Sie eine Subshell ohne nicht globale Konfigurationsdateien und prüfen Sie, ob der Fehler auch dort auftritt:
    cd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
    
    Wenn das Problem in dieser Unterschale nicht auftritt, bedeutet dies, dass sich das Problem irgendwo in Ihren nicht globalen Punktdateien befindet. Sie können eine Liste dieser Dateien erhalten, indem Sie dies tun
    ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
    
  • Starten Sie Zsh mit neu exec zsh -vxund untersuchen Sie die Ausgabe von Anfang an, um /etc/zshrc_Apple_Terminalfestzustellen, ob sie bezogen wird und ob etwas später den von ihm eingerichteten precmdHook überschreibt .