Algumas instâncias do bash alteram o histórico de comandos quando você reutiliza e edita um comando anterior, outras aparentemente não. Estive pesquisando e pesquisando, mas não consigo encontrar nada que diga como impedir que os comandos no histórico sejam modificados quando reutilizados e editados.
Existem perguntas como essa , mas isso parece dizer como lidar com o histórico que está sendo editado. Recentemente, deparei-me com uma instância do bash que edita o histórico quando você reutiliza um comando - todos os shells anteriores do bash que usei foram (até onde eu notei) configurados para não alterar o histórico quando você reutiliza e edite um comando. (Talvez eu não tenha prestado a devida atenção ao meu histórico de conchas nos últimos 15 anos ou mais ...)
Então essa é provavelmente a melhor pergunta: Posso dizer ao bash NUNCA para modificar a história - e se sim, como?
fonte
history -p
para fazer expansões do histórico sem afetar o arquivo do histórico. Você pode fazer ohistory -s
mesmo e anexar ao histórico sem execução. Você pode fazerHISTIGNORE='start of a command I never want in history.*:command2.*'
para manter certos comandos fora do histórico.set revert-all-at-newline on
pergunta que você vincula não resolve o seu problema? Você pode mostrar como reproduzir o problema? Observe que você também pode usarzsh
para um comportamento mais alinhado com o que deseja.history -p
é algo que eu teria que fazer para cada comando que eu quero reutilizar - está certo? Nesse caso, não é exatamente o que estou procurando. Como mencionei, usei instâncias do bash que nunca modificam o histórico quando um comando é reutilizado e editado.revert-all-at-newline
é exatamente o que eu preciso. Se eu editar um comando e pressionar CTRL-C para cancelá-lo, também não quero que isso afete o histórico. Eu nunca tive que configurar o bash para não modificar o histórico, o que é parte da razão pela qual estou confuso sobre o motivo pelo qual, às vezes, uma nova instalação se comporta de uma maneira e às vezes da outra. A propósito, em uma instância que não edita o histórico na reutilização de comandos, abind -V | grep revert
indica querevert-all-at-newline
está definido como 'off'.bash
. É tudo sobre readline. Existem diferentes implementações dereadline
biblioteca e também possui seu próprio conjunto de configurações (MUITAS) e seu próprio arquivo de configuração. Não tenho certeza exatamente se essa é uma configuração ou simplesmente uma diferença de implementação, mas você deve procurar na documentação relacionada à linha de leitura, não no bash.Respostas:
Acontece que
revert-all-at-newline
é a resposta. Eu precisava incluirset revert-all-at-newline on
no meu~/.inputrc
arquivo, pois o uso doset
comando no prompt do bash não teve efeito. (Então, é claro, tive que iniciar um novo shell.)Além disso, descobri que ele
~/.inputrc
é carregado em vez de/etc/inputrc
presente, o que significa que os padrões definidos no último não estão mais ativos quando você cria~/.inputrc
. Para corrigir isso, comece~/.inputrc
com$include /etc/inputrc
.Agradeço a @ StéphaneChazelas por me indicar a direção certa.
fonte
Em ~ / .bashrc você pode adicionar
fonte
histappend
está ativado, mas meu histórico ainda mostra edições nos comandos anteriores.