Depende se você deseja adicionar um conjunto de citações em torno da palavra da expansão do histórico ou não.
Assumindo foo="abc def"
, compare
$ echo $foo
$ printf "<%s>\n" !$
vs.
$ echo $foo
$ printf "<%s>\n" "!$"
O primeiro produz printf "<%s>\n" $foo
, invocando a divisão de palavras e printf
obtém dois argumentos após a cadeia de formatações. O segundo produz printf "<%s>\n" "$foo"
, onde as aspas impedem a divisão de palavras, como de costume.
Claro, se você fizesse isso:
$ echo "$foo"
Em seguida, um !$
no seguinte comando já seria expandido para "$foo"
, com as cotações já em vigor. Agora, usar "!$"
produziria ""!$""
, onde as aspas efetivamente se cancelam.