J'utilise le terminal Mac avec une main pleine d'onglets affectés chacun à un répertoire de travail différent. Je l'ai configuré pour ouvrir de nouvelles fenêtres avec le même répertoire de travail. Néanmoins, lorsque je quitte le terminal et le redémarre, il reconstruit tous les onglets, leurs noms, me montre même la dernière sortie dans la fenêtre mais reste dans le répertoire de base de l'utilisateur et ne restaure pas le dernier répertoire de travail de chaque onglet.
Qu'est-ce que je fais mal? Cela peut-il être causé par un paramètre dans le ~/.bash_profile
?
Réponses:
(Pour référence, nous parlons de la fonction de reprise de Mac OS X Lion 10.7 et versions ultérieures.)
Terminal restaure automatiquement le répertoire de travail si vous utilisez le shell par défaut, bash. Si vous utilisez un autre shell, vous devrez adapter le code
/etc/bashrc
pour envoyer une séquence d'échappement pour communiquer le répertoire de travail à Terminal afin qu'il puisse restaurer le répertoire plus tard pour reprendre. Si vous utilisez zsh, consultez ma réponse à Resume Zsh-Terminal (OS X Lion) , dans laquelle j'inclus le code approprié pour zsh.Si vous avez une personnalisation
~/.bash_profile
ou~/.bashrc
vous devrez peut-être vous assurer que vous n'annulez pas le comportement par défaut en modifiant/etc/bashrc
les personnalisations de. En particulier, il définit laPROMPT_COMMAND
variable d'environnement pour envoyer la séquence d'échappement à chaque invite. Si vous personnalisez cette variable, vous devrez préfixer ou ajouter votre code à la valeur actuelle, par exemple:De plus,
~/.bash_profile
devrait généralement exécuter~/.bashrc
:la source
.bashrc
(bien que je n'aie pas repéré de personnalisation de commande d'invite. Maintenant, je fais ce qui suit: 1. Ouvrez une nouvelle fenêtre de terminal (s'ouvre dans le répertoire personnel de mon utilisateur) 2. Documents cd 3. Quittez le terminal 4. Ouvrez le terminal 5 Une fenêtre rouvre affichant la sortie du changement de répertoire mais toujours située dans le répertoire personnel de l'utilisateur~/.bash_profile
,~/.bash_login
et~/.profile
.~/.bashrc
selon votre suggestion dans votre réponse./etc/bashrc
semble avoir été modifié par un script d'installation ou autre. Il y en avait un/etc/bashrc.orig
qui contenait une configuration supplémentaire (que je suppose être la configuration d'origine) gist.github.com/3273170 . Réajouter cela aux/etc/bashrc
choses qui fonctionnaient comme prévu à nouveau. Merci beaucoup pour votre aide et votre patience!Si vous utilisez Bash-It, vous pouvez rencontrer le problème d'
$PROMPT_COMMAND
être écrasé par celui-ci.Comme mentionné, il est utilisé par OS X pour restaurer cwd dans de nouveaux onglets. Bash it devrait ajouter des valeurs, pas les remplacer.
Mais une solution de contournement pour l'instant serait d'ajouter la ligne suivante à votre
~/.bash_profile
Pour plus d' informations Commander le tracker d'émission pour les mises à jour: https://github.com/revans/bash-it/issues/240
Et la référence Apple pour cela https://developer.apple.com/library/mac/documentation/darwin/reference/manpages/man1/sh.1.html
la source
J'ai rédigé un article de blog sur la façon de procéder pour csh / tcsh avant de découvrir cette réponse; si quelqu'un d'autre vient ici à la recherche d'une solution pour ces obus, le voici:
Ajoutez cela à votre
.cshrc
ou.tcshrc
selon le cas. (L'instruction if externe est nécessaire pour éviter une erreur lors de la connexion à distance, comme avec ssh. Elle doit être une instruction distincte en raison des règles d'expansion des variables dans tcsh.)Comme le support bash intégré d'Apple, cette solution n'utilise aucun programme externe autre que
printf
, au prix de seulement des espaces qui s'échappent. Si vous devez échapper à d'autres caractères spéciaux, vous devrez travailler un peu plus pour trouver une solution plus complète.la source