Seu entendimento está correto.
emulate -R zsh
redefine todas as opções para os padrões zsh. O -L
flag torna este local na função de contenção (e geralmente torna todas as mudanças de opções locais para a função).
Colocar emulate -LR zsh
perto do início de uma definição de função é uma boa higiene quando a função é usada em contextos onde as opções são potencialmente diferentes, especialmente em shells interativos.
Nesta instância específica, emulate -LR zsh
não é necessário, porque o código não é afetado por nenhuma opção. Mas não faz mal nenhum.
Aqui estão alguns exemplos de opções que um usuário pode definir em seu arquivo de inicialização, ou que podem ser desativadas pelo código circundante que chama a função, e que pode quebrar uma função:
- Desativar
bare_glob_qual
interrompe o uso de qualificadores glob. - Desativando
care_glob
oucase_match
faria com que alguns padrões não dessem distinção entre maiúsculas e minúsculas, mesmo que isso não fizesse sentido na função. -
null_glob
ecsh_null_glob
afeta o comportamento de padrões glob que não correspondem a nenhum arquivo. -
numeric_glob_sort
pode interromper uma função que exige que os padrões sejam expandidos em ordem lexicográfica. -
err_exit
eunset
pode causar erros onde o código da função pretendia o comportamento padrão (ignorar o status de um comando, tratar uma variável indefinida como vazia).