J'exécute régulièrement plusieurs screen
sessions sur mes ordinateurs de bureau et serveurs Linux.
Un problème avec ceci est que lorsque je grep
consulte l'historique des commandes, je découvre que j'ai émis une commande dans une session différente et que je dois me détacher et le reconnecter pour obtenir cet élément d'historique.
Est-il possible de «forcer» les historiques mis à jour différemment à partir de plusieurs sessions pour qu'ils passent tous dans un historique central?
Réponses:
Il y a deux choses à faire:
shopt -s histappend
dans votre.bashrc
. Cela ajoutera au fichier d’historique au lieu de l’écraser..bashrc
, l’insertionPROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
et l’historique seront réécrits et relus à chaque fois que bash affiche l’invite.EDIT: Merci à e-t172 pour le
history -n
tourla source
PROMPT_COMMAND
défini auparavant, j'ai donc dû utiliserPROMPT_COMMAND="history -a; history -n"
pour éviter les erreurs.Veuillez ne pas utiliser
history -a; history -n
, cela ne fonctionne pas comme prévu et vous laissera de nombreuses commandes dupliquées et hors d' usage dans votre historique. Une solution qui fonctionne généralement comme prévu est la suivante:Utiliser une nouvelle ligne au lieu d'un point-virgule est également un moyen simple de traiter le problème de point-virgule manquant / en double avec PROMPT_COMMAND.
la source
export
n'est pas nécessaire. Parce que les options interactives du shell doivent être définies à partir~/.bashrc
de chaque sous-shell, l'héritage n'est donc pas nécessaire.PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
place?PROMPT_COMMAND n'est pas défini par défaut dans certaines distributions. Par exemple, il est défini dans Arch, mais pas dans Debian.
J'ai un bashrc dans ma Dropbox que j'utilise en distro hopping, et il comprend:
la source
PROMPT_COMMAND="$PROMPT_COMMAND; history -a; history -n"
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''history -a; history -n'