4 votes

Pourquoi Terminal.app corrompt-il mon historique tcsh ?

J'ai un problème récurrent qui semble être spécifique à OS X et à Terminal.app : périodiquement, j'obtiens des déchets dans mon historique tcsh qui ressemblent à ceci :

^[[1m^[[4mcomputername:~/Code/emacs-source ( 1827 ) $^[[0m^[[24m logout

D'une manière ou d'une autre, mon invite (y compris les caractères de contrôle de balisage) est stockée dans l'historique des commandes. Dans mon fichier .history, les commandes corrompues sont répétées avec le même numéro de commande :

#+1391563259
[1m[4mcomputername:~/Code/emacs-source ( 1827 ) $[0m[24m
#+1391563259
Use "logout" to logout.
#+1391563259
[1m[4mcomputername:~/Code/emacs-source ( 1827 ) $[0m[24m logout 

Cela semble être le résultat de la fermeture des fenêtres et des onglets de Terminal.app, mais je ne suis pas sûr de la raison. Pour résoudre ce problème - puisque la fusion de l'historique est activée - j'ai dû fermer toutes les sessions tcsh et supprimer les commandes corrompues du fichier .history. Existe-t-il un moyen d'éviter que cela ne se produise ?

0voto

Jason S Points 31

Est-ce que vous coupez/collez des commandes et récupérez certains de vos prompts par accident ?

Ce n'est pas tout à fait la réponse que vous cherchez, mais jetez sed -i.bak -e "s/ \x1b [[0-9 ;]{1,5}m//g" .history dans votre .logout ou cron et vous ne devriez plus avoir à le nettoyer manuellement.

0voto

Jack Points 11

J'avais oublié ce problème, mais voici une mise à jour. La fonction de fusion de tcsh savehist n'est pas atomique, donc la fermeture simultanée de plusieurs sessions peut entraîner une corruption du fichier historique :

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=632892

Je ne sais pas si cela a été corrigé ou le sera ; j'en ai finalement eu assez de cela et d'autres problèmes de tcsh et je suis passé à bash.

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