Histórico de Bash Persistente entre processos destacados

0

Eu ainda não consegui encontrar isso entre a documentação do Bash, então eu esperava que pudesse ser respondida se eu perguntasse aqui. Existe alguma maneira que eu possa, na execução de um script, ramificar seu histórico (ou seja, ter o mesmo histórico como o shell no processo pai que invoca o script, sem usar source ou . para) e após a conclusão, não tem seu histórico registrado em ~/.bash_history ?

O objetivo de não ter seu histórico gravado é que o último comando antes de invocar o script se torna o segundo último comando após invocar o script. É mais fácil usar somente set -o history , registrar o número de comandos executados e, no final do script, excluir apenas algumas linhas de $HISTFILE ?

    
por Francesco Gramano 25.04.2015 / 01:38

1 resposta

2

A execução de um script de shell inicia um processo de Bash como um shell não interativo . Nesse modo, a expansão da história não é realmente executada. Na página de manual do Bash, man bash :

HISTORY EXPANSION

The shell supports a history expansion feature that is similar to the history expansion in csh. This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the +H option to the set builtin command (see SHELL BUILTIN COMMANDS below). Non-interactive shells do not perform history expansion by default.

Eu não vi nenhuma menção de ter um script salvar seus comandos no arquivo de histórico do Bash, mas nunca vi isso acontecer na prática.

Estou assumindo que você execute seus scripts da maneira padrão (como um arquivo executável contendo comandos shell ou fornecendo o nome do script como argumento para um comando bash). Se não estou interpretando sua pergunta corretamente, você poderia editar sua pergunta para esclarecer?

    
por 25.04.2015 / 23:23