Alguém sabe por que o bash ainda tem a substituição do histórico ativada por padrão? O meu .bashrc
foi incluído set +H
por muitos anos, mas algumas outras pessoas ainda estão sendo mordidas por esse recurso.
Dado que praticamente todo mundo está usando terminais com recursos de copiar e colar e o bash compilado com substituição de readline
biblioteca e histórico é ativado por padrão apenas em shells interativos, existe realmente alguma razão para ter esse recurso? Nenhum dos scripts existentes seria quebrado, mesmo que estivesse desativado por padrão para todos os shells.
Tente isso se você não souber por que a substituição do histórico está quebrada:
$ 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, o recurso apresenta grandes problemas se estiver desativado por padrão para todos os scripts e existe um recurso para verificar os resultados antes de executar:. shopt -s histverify
)
Veja também:
&
? Por que eu preciso escapar ou citar um nome de arquivo que contém um ?
? Existem UIs para pessoas que pensam que isso é um problema.
!$
várias vezes ao dia, e !!
muitas vezes também. Devo admitir que não uso tanto outras substituições do histórico, mas ficaria infeliz se o comportamento padrão do shell que uso há anos mudasse repentinamente.
ls -l foo/bar/baz/weeble.cpp
comless !$
a recordação do comando e editá-lo.