J'utilise les paramètres par défaut pour Terminal, mais lorsque je crée un nouvel onglet, mon répertoire de travail est toujours défini sur mon dossier personnel au lieu du répertoire de travail actuel de l'onglet précédent.
Voici une image de mes préférences de terminal:
Comme vous pouvez le voir dans les paramètres généraux, «Les nouveaux onglets ouverts avec:» sont définis sur «Même répertoire de travail». Cela ne semble pas fonctionner. Je pense que je me souviens de ce travail dans les anciennes versions de Terminal.
Mon shell de connexion par défaut est réglé sur /bin/zsh
, et je n'ai pas de ~/.zshrc
.
Je voudrais pouvoir résoudre ce problème sans installer quelque chose comme oh-my-zsh
ou avoir à ajouter quelque chose à ~/.zshrc
. Cela devrait fonctionner sans cela. (Au moins, il l'est dans iTerm2.)
Par défaut, sur OS X, Bash est configuré pour communiquer le répertoire de travail actuel à Terminal en utilisant les séquences d'échappement à chaque invite, en utilisant la variable d'environnement PROMPT_COMMAND
.
Avant OS X El Capitan 10.11, ce code se trouve dans /etc/bashrc
. En 10.11 et versions ultérieures, il a été déplacé vers le fichier spécifique /etc/bashrc_Apple_Terminal
et /etc/bashrc
exécute le fichier approprié spécifique au terminal.
Les versions actuelles de Oh My Zsh! Ont un code similaire pour communiquer le répertoire de travail au Terminal.
La raison la plus probable pour laquelle cela a cessé de fonctionner est que vous avez modifié votre configuration. Peut-être que vous utilisiez Bash avant ou vous avez installé Oh My Zsh et que vous ne l'avez pas. Une autre possibilité est que vous ayez votre shell configuré pour définir le titre de la fenêtre ou de l'onglet du terminal (aka "icon") pour contenir le chemin d'accès du répertoire de travail: en tant que commodité pour les anciennes configurations, si le répertoire de travail n'est pas défini explicitement, mais le Le titre de la fenêtre ou de l'onglet contient un nom de chemin d'accès local valide, le terminal le traitera comme le répertoire de travail actuel.
Une façon simple de s'assurer que l'option «Nouvelle fenêtre / onglet ouvert de Terminal.app avec l'option« Répertoire de travail identique »fonctionne toujours avec zsh, car votre shell de connexion indique à zsh de communiquer les modifications dans le répertoire de travail actuel à Terminal.app via la séquence d'échappement. Je l'ai fait dans mon .zshrc
avec ceci:
# tell terminal.app about cwd so new tabs open in same dir tell_terminal_cwd() { cwd=$(print -rD $PWD) echo -ne "\033]0;${cwd}\007" } precmd_functions+=(tell_terminal_cwd)
Les instructions de Terminal.app sur ce sujet indiquent que le répertoire de travail actuel est un fichier correctement codé: // URL incluant le nom de l'hôte, mais j'ai constaté que ce qui précède fonctionne bien et a l'air sympa dans le titre de l'onglet.
Comme vous, je voulais le faire sans charger tout Oh-My-Zsh.
Il s'avère que, à partir du 4e306887 environ (pourquoi OMZ ne semble-t-il avoir aucun concept de «versions!?» termsupport.zsh
développement de logiciel mal. ಠ_ಠ), le fichier termsupport.zsh
qu'ils incluent vous gère. Vous devrez également détruire les functions.zsh
.
Personnellement, j'utilise le super léger (comme, j'ai lu tout le code avant de commencer à l'utiliser car il s'agit d'un fichier ≤500-ligne) Zgen.zsh
. (Il prend explicitement en charge l'utilisation des modules OMZ et sans le chargement du reste de l'OMZ!) Si vous choisissez de le faire, voici la solution:
if ! zgen saved ... # Steal omz's termsupport for Apple Terminal. (Hacky; will have to # watch to see if this changes.) - <http://superuser.com/a/1031708/22030> zgen load robbyrussell/oh-my-zsh lib/functions.zsh zgen load robbyrussell/oh-my-zsh lib/termsupport.zsh ... fi