Isso é causado por um recurso . De man less :
Some options like -k or -D require a string to follow the option letter. The string for that option is considered to end when a dollar sign ($) is found. For example, you can set two -D options on MS-DOS like this:
LESS="Dn9.1$Ds4.1"
Então você poderia fazer:
LESS='ppattern$i' PAGER=less man less
Para iniciar less , procurando por pattern sem diferenciação de maiúsculas e minúsculas.
--use-backslash pode ser usado para permitir que \ escape desse $ .
Agora, embora faça sentido para a variável $LESS , faz pouco sentido para argumentos para opções na linha de comando. Nisso, pode ser visto como um bug que você pode querer denunciar.
Observe também que o processamento de $ ocorre apenas quando o $ ocorre no mesmo argumento que contém a opção que explica a discrepância entre o -p '\$l' vs -p'\$l' e --pattern '\$l' vs --pattern='\$l' causando confusão e mais justificativa de que isso pode ser visto como um bug.
Note que você também terá problemas para:
less -p' foo'
Em que less procura "foo" em vez de " foo" (use novamente -p ' foo' ). Veja a função scan_option() em options.c na fonte para detalhes.