Você pode executar os comandos de histórico em um manipulador de sinal, evitando o uso de um subshell. Então, tenha PS1
enviando o sinal apropriado:
trap 'history -a; history -c; history -r;' USR1
export PS1='$(kill -USR1 $$)'"$PS1"
Às vezes, faço login em um host que não controle e onde PROMPT_COMMAND
é readonly
. Existe alguma maneira de contornar isso para executar history
comandos de qualquer maneira , por exemplo, usando PS1
? Eu tentei PS1='$(history -a; history -c; history -r; echo finished)'
- Ele imprime finished
em cada prompt, mas parece que não funciona:
a
. b
. Em um host onde PROMPT_COMMAND='history -a; history -c; history -r;'
, isso resultará no terminal B mostrando a
. Em um host em que PS1
comece com $(history -a; history -c; history -r; echo finished)
, ele mostrará o comando que foi executado antes de os dois terminais serem abertos. A razão óbvia é que o comando em PS1
é executado em um subshell.
Outra alternativa é ignorar completamente o arquivo RC global:
bash --rcfile ~/.bashrc
No entanto, evitar o uso do valor padrão de PROMPT_COMMAND
muito provavelmente não será aceito pelo administrador do sistema por motivos de política.
Você pode executar os comandos de histórico em um manipulador de sinal, evitando o uso de um subshell. Então, tenha PS1
enviando o sinal apropriado:
trap 'history -a; history -c; history -r;' USR1
export PS1='$(kill -USR1 $$)'"$PS1"