Em um shell interativo, $IFS
será o padrão, a menos que você o altere ou algo em scripts de inicialização do shell (como ~/.bashrc
para bash
) ou quaisquer outros scripts originados ou funções shell executadas desde que o shell foi iniciado eles (geralmente não mudariam de volta para o padrão se estivessem escritos corretamente).
Se as funções definidas em arquivos rc ou outros arquivos originados forem escritas corretamente e precisarem usar a divisão de palavras, elas não assumirão nada sobre o valor atual do IFS , por isso deve ser bom para você configurá-lo para um valor diferente.
No entanto, depois de alterá-lo, é preciso lembrar que você fez isso, pois isso pode afetar o modo como as linhas de comando executadas posteriormente são interpretadas.
Por exemplo, se você fizer isso:
IFS=:; ls -- $PATH
Para listar os diretórios em $PATH
, você pode se perguntar por que mais tarde coisas como:
rm -f -- $(cat ~/my.file.list)
não funciona mais. Então você também pode escrever:
(IFS=:; ls -- $PATH)
Ou:
IFS=:; ls -- $PATH; unset IFS
(BTW, unset IFS
restaura a divisão da palavra para seu comportamento padrão, mas não $IFS
e quebra as funções (não escritas corretamente) que fazem coisas como oldIFS=$IFS; IFS=xxx; ...; IFS=$oldIFS
para restaurar $IFS
).