2 votes

Pourquoi le terminal ne respecte-t-il pas les préférences ?

Au cours de la semaine dernière, mon terminal a cessé d'honorer l'instruction "Nouveaux onglets ouverts avec" : Même répertoire de travail". Le test avec "Nouvelles fenêtres ..." a donné le même résultat.

Mon shell est zsh.

J'ai réussi à faire fonctionner ceci en suivant une réponse ici 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
}

Mais : Je ne sais pas comment j'aurais pu le déterminer moi-même ou comment j'aurais pu déboguer un problème similaire. .

Tout conseil ou toute astuce permettant de déterminer quelles sont les premières étapes du terminal serait grandement apprécié.

Les choses qui n'ont pas fonctionné :

Autres informations potentiellement utiles :

  • Les paramètres "Même profil"/"Profil par défaut" sont honorés lorsqu'ils sont modifiés.
  • Ajout de pwd comme la première ligne de .zshrc montre que le répertoire est déjà /home/<myuser>
  • J'ai installé et désinstallé certains outils et projets concernant nix récemment (notamment nix-darwin )

Terminal Preferences

Métadonnées :

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

3voto

Marlon Richert Points 755

Si vous cliquez sur "Escape sequence " dans cette capture d'écran, vous obtenez ce qui suit :

enter image description here

Ce que cela ne vous dit pas, cependant, c'est que cela est normalement pris en charge dans le fichier /etc/zshrc_Apple_Terminal qui est appelé à partir de /etc/zshrc . Il y a plusieurs choses qui peuvent empêcher /etc/zshrc_Apple_Terminal d'être appelé ou qui peut remplacer ce qu'il essaie de faire :

  • Vous démarrez Zsh avec zsh -d o zsh -f .
  • Vous avez un fichier ${ZDOTDIR:-$HOME}/.zshenv o ${ZDOTDIR:-$HOME}/.zprofile dans lequel vous avez setopt NO_rcs o setopt NO_globalrcs
  • Le paramètre $TERM_PROGRAM n'a pas la valeur Apple_Terminal .
  • Zsh n'a pas accès en lecture à /etc/zshrc_Apple_Terminal .
  • Lorsque /etc/zshrc_Apple_Terminal devient une source, le paramètre $INSIDE_EMACS est non nul.
  • Vous définissez une fonction precmd parfois après /etc/zshrc_Apple_Terminal devient une source, qui remplace alors celle définie par add-zsh-hook .

Ce que vous pouvez faire pour déboguer :

  • Démarrez un sous-shell sans fichiers de configuration non globaux et voyez si le bogue se produit là aussi :

    cd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh

    Si le problème ne se produit pas dans ce sous-shell, cela signifie que le problème se situe quelque part dans vos dotfiles non globaux. Vous pouvez obtenir une liste de ces fichiers en faisant

    ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
  • Redémarrez Zsh avec exec zsh -vx et étudie la sortie du début pour voir si /etc/zshrc_Apple_Terminal et si quelque chose d'autre remplace l'option precmd le crochet qui s'installe.

0 votes

Tout ce que je pouvais espérer d'une réponse, j'ai beaucoup appris. Merci !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X