No comando:
echo "!$"
!$ é expandido em bash antes de passar para echo . Dentro de aspas duplas , se habilitado, a expansão do histórico será executada, a menos que você escape de ! , usando barra invertida \ . bash tinha feito a expansão, echo não faz nada aqui, apenas imprime o que tem.
! $ refere-se ao último argumento do anterior comando, que é a string '!$' .
No seu segundo exemplo:
$ echo '!$'
!$
$ echo "!echo "!$""
echo "echo '!$' "'!$'""
echo '!$' !$
Comando echo "echo '!$' "'!$'"" , os argumentos passados para echo estão divididos em três partes:
- Primeiro:
"echo '!$' ", expandido para a stringecho '!$'. - Segundo:
'!$', expandido para a string!$. - Terceiro:
""expandido para string vazia.