set -f é o caminho portátil (ou seja, POSIX) para desabilitar a expansão de nomes de arquivos.
Quando ativada (por padrão ou com set +f ), a expansão de nome de arquivo é uma operação executada pelo shell que substitui, quando possível, argumentos de linha de comando que contêm:
- ocorrências de curingas (
?= qualquer caractere único e*= qualquer número de caracteres) - intervalos entre colchetes (por exemplo,
[a-z12]= qualquer caractere deaazou1ou2) - listas não correspondentes (por exemplo,
[^a-z]= qualquer caractere que não esteja no intervaloatoz) - e classes de caracteres (por exemplo,
[[:xdigit:]]= qualquer caractere que possa ser usado para representar um número hexadecimal)
pelos nomes dos arquivos que correspondem a eles.
Quando desativado, esses argumentos permanecem inalterados.
$ pwd
/etc/samba
$ echo *
lmhosts smb.conf
$ echo *o??
smb.conf
$ set -f
$ echo *
*
$ echo *o??
*o??