Eu costumo executar várias screen
sessões nos meus desktops e servidores Linux.
Um problema disso é que, grep
durante o meu histórico de comandos, descobri que emiti um comando em uma sessão diferente e preciso desanexar e reconectar para obter esse item do histórico.
É possível 'forçar' as histórias atualizadas de maneira diferente de várias sessões para todas, para uma história central?
Respostas:
Há duas coisas que você precisa fazer:
shopt -s histappend
no seu.bashrc
. Isso será anexado ao arquivo de histórico em vez de substituí-lo..bashrc
, insiraPROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
e o arquivo de histórico será reescrito e relido sempre que o bash mostrar o prompt.EDIT: Graças a e-t172 para o
history -n
truquefonte
PROMPT_COMMAND
definido anteriormente, então tive que usarPROMPT_COMMAND="history -a; history -n"
para evitar erros.Por favor, não use
history -a; history -n
, ele não funciona como o esperado e o deixará com muitos comandos duplicados e fora de ordem em seu histórico. Uma solução que funciona geralmente conforme o esperado é a seguinte:Usar uma nova linha em vez de um ponto e vírgula também é uma maneira curta de lidar com o problema de ponto e vírgula ausente / duplicado com o PROMPT_COMMAND.
fonte
export
não é necessário. Como as opções interativas do shell devem ser definidas a partir das~/.bashrc
quais é chamada a partir de cada sub shell, a herança não é necessária.PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
?PROMPT_COMMAND não está definido por padrão em algumas distros. Por exemplo, é definido no Arch, mas não no Debian.
Tenho um bashrc no meu Dropbox que uso durante a distribuição de distros e inclui:
fonte
PROMPT_COMMAND="$PROMPT_COMMAND; history -a; history -n"
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''history -a; history -n'