Warum berücksichtigt Terminal keine Präferenzen?
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
return
bei 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
pwd
als erste Zeile.zshrc
zeigt das Verzeichnis bereits/home/<myuser>
- Ich habe einige Tools und Projekte installiert und deinstalliert, die
nix
kürzlich (einschließlichnix-darwin
)

Metadaten:
OS macOS Catalina 10.15.7 (19H2)
Terminal 2.10 (433)
zsh 5.7.1 (x86_64-apple-darwin19.0)
Antworten
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_Terminal
aus aufgerufen wird /etc/zshrc
. Es gibt verschiedene Dinge, die verhindern können, dass /etc/zshrc_Apple_Terminal
sie aufgerufen werden, oder die überschreiben können, was versucht wird:
- Sie starten Zsh mit
zsh -d
oderzsh -f
. - Sie haben eine Datei
${ZDOTDIR:-$HOME}/.zshenv
oder${ZDOTDIR:-$HOME}/.zprofile
in der Siesetopt NO_rcs
oder habensetopt NO_globalrcs
- Der Parameter
$TERM_PROGRAM
hat nicht den WertApple_Terminal
. - Zsh hat keinen Lesezugriff auf
/etc/zshrc_Apple_Terminal
. - Bei
/etc/zshrc_Apple_Terminal
der Beschaffung ist der Parameter$INSIDE_EMACS
ungleich Null. - Sie definieren eine Funktion
precmd
irgendwann nach/etc/zshrc_Apple_Terminal
der Beschaffung, die dann die durch definierte Funktion überschreibtadd-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:
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 tuncd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
- Starten Sie Zsh mit neu
exec zsh -vx
und untersuchen Sie die Ausgabe von Anfang an, um/etc/zshrc_Apple_Terminal
festzustellen, ob sie bezogen wird und ob etwas später den von ihm eingerichtetenprecmd
Hook überschreibt .