Algunas instancias de bash cambian el historial de comandos cuando reutiliza y edita un comando anterior, otras aparentemente no. He estado buscando y buscando, pero no puedo encontrar nada que diga cómo evitar que se modifiquen los comandos en el historial cuando se reutilizan y editan.
Hay preguntas como esta , pero parece decir cómo lidiar con la historia que se está editando. Recientemente me encontré con una instancia de bash que edita el historial cuando reutiliza un comando: todos los shells de bash anteriores que he usado se han configurado (hasta donde sé) para que no cambien el historial cuando se reutiliza y edite un comando. (Quizás no he prestado la debida atención a mi historial de shell durante los últimos 15 años más o menos ...)
Entonces esa es probablemente la mejor pregunta: ¿PUEDO decirle a bash NUNCA que modifique el historial? Y si es así, ¿cómo?
fuente
history -p
para hacer expansiones de historial sin afectar el archivo de historial. Puede hacerhistory -s
lo mismo y agregar al historial sin ejecución. Puede hacerHISTIGNORE='start of a command I never want in history.*:command2.*'
para mantener ciertos comandos fuera de la historia.set revert-all-at-newline on
resuelve el problema en la pregunta que vincula? ¿Puedes mostrar cómo reproducir el problema? Tenga en cuenta que también puede usarzsh
para un comportamiento más en línea con lo que desea.history -p
es algo que tendría que hacer para cada comando que quiera reutilizar, ¿es así? Si es así, eso no es exactamente lo que estoy buscando. Como mencioné, he usado instancias de bash que nunca modifican el historial cuando un comando se reutiliza y edita.revert-all-at-newline
sea lo que necesito. Si edito un comando y presiono CTRL-C para cancelarlo, tampoco quiero que eso afecte el historial. Nunca antes tuve que configurar bash para no modificar el historial, lo cual es parte de la razón por la que estoy confundido de por qué a veces una instalación nueva se comporta de una manera y otras de otra. Por cierto, en una instancia que no edita el historial de reutilización de comandos, abind -V | grep revert
indica querevert-all-at-newline
está configurado en 'apagado'.bash
. Se trata de readline. Hay diferentes implementaciones de lareadline
biblioteca, y también tiene su propio conjunto de configuraciones (MUCHAS de ellas) y su propio archivo de configuración. No estoy seguro exactamente si esto es una configuración o simplemente una diferencia de implementación, pero debe buscar en la documentación relacionada con readline, no bash.Respuestas:
Resulta que
revert-all-at-newline
es la respuesta. Necesitaba incluirset revert-all-at-newline on
en mi~/.inputrc
archivo, ya que el uso delset
comando en el indicador bash no tuvo ningún efecto. (Entonces, por supuesto, tuve que comenzar un nuevo shell).Además, descubrí que
~/.inputrc
se carga en lugar de/etc/inputrc
si está presente, lo que significa que los valores predeterminados definidos en este último ya no estarán activos cuando cree~/.inputrc
. Para solucionar esto, comience~/.inputrc
con$include /etc/inputrc
.Gracias a @ StéphaneChazelas por señalarme en la dirección correcta.
fuente
En ~ / .bashrc puedes agregar
fuente
histappend
está activado, pero mi historial aún muestra ediciones de comandos anteriores.