¿Alguien sabe por qué bash todavía tiene la sustitución de historial habilitada de forma predeterminada? Mi .bashrc
ha incluido set +H
durante muchos años, pero algunas otras personas todavía están siendo mordidas por esta característica.
Dado que casi todo el mundo está usando terminales con funciones de copiar y pegar y bash compilado con la readline
biblioteca y la sustitución del historial está habilitada por defecto solo en shells interactivos, ¿hay realmente alguna razón para tener la función? Ninguno de los scripts existentes se rompería incluso si esto estuviera deshabilitado por defecto para todos los shells.
Pruebe esto si no sabe por qué se rompe la sustitución del historial:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(Claramente, la función tiene problemas importantes si está deshabilitada de forma predeterminada para todas las secuencias de comandos y existe una función para verificar los resultados antes de ejecutarla shopt -s histverify
.)
Ver también:
&
? ¿Por qué debería necesitar escapar o citar un nombre de archivo que contiene un ?
? Hay IU para personas que piensan que esto es un problema.
!$
varias veces al día, y con !!
bastante frecuencia también. Tengo que admitir que no uso otras sustituciones de historial tanto, pero definitivamente no estaría contento si el comportamiento predeterminado del shell que he estado usando durante años cambia repentinamente.
ls -l foo/bar/baz/weeble.cpp
con elless !$
que en la memoria del comando y editarlo.