Sim, é seguro assumir que IFS
está definido.
O valor padrão de IFS
é uma string que consiste em um espaço, uma tabulação e uma nova linha. Este é um requisito do padrão POSIX :
The shell shall set
IFS
to<space>
<tab>
<newline>
when it is invoked.
Em um shell bash
com configurações padrão, printf '%q\n' "$IFS"
mostrará o valor padrão de IFS
as
$' \t\n'
É inseguro supor que IFS
tenha o valor padrão, e é importante citar adequadamente as expansões para que a divisão de campo não ocorra. É muito divertido considerar o que acontece se IFS
contiver dígitos.
Veja também