Em:
echo $IFS
você não duplicou a variável de citação, o conteúdo da variável sob efeito do operador glob + split em todos os shells parecidos com Bourne, exceto zsh
:
echo glob(split($IFS))
Os caracteres em IFS
em si são usados para divisão, então $IFS
expandido para nada, você só tem uma linha vazia de echo
.
Quando você dá aspas duplas em "$IFS"
, o conteúdo de IFS
foi passado para eco como está, você tem um espaço, uma guia e uma nova linha, que são os valores padrão de IFS
.
%q
do comando printf
é uma extensão de ksh
, bash
e zsh
, que exibirá a sequência em um formato que pode ser reutilizado como entrada do shell, mas não tem efeito a expansão das variáveis do shell.