As respostas que você encontrou no Stack Exchange estão corretas e este tutorial está errado. Você pode experimentar sozinho ou pesquisar no padrão . Um unset IFSé equivalente a defini-lo como o valor padrão de space-tab-newline, enquanto um vazio IFSdesativa efetivamente a divisão de campos.
Você pode consultar a página de Sven Mascheck no IFS sobre implementações históricas. Alguns shells históricos não gostaram unset IFSe uma versão muito antiga do ksh o tratou como um vazio, IFSmas todos os shells modernos e a maioria dos shells antigos tratam um IFSvalor não definido como o valor padrão.
Você não deve iniciar seu script a IFS=menos que queira desativar a divisão de campo (o que pode ser uma decisão razoável - mas observe que você ainda precisa colocar aspas duplas em torno das substituições para evitar globbing, a menos que você o desative set -ftambém). Para redefinir o valor padrão, use unset IFS. É discutível se isso é útil no início de um script; existem muitas outras coisas ruins, como uma desonesta, PATHque o chamador pode fazer para que seu script dê errado.
Este tutorial também recomenda redefinir PATH. Isso geralmente é um mau conselho. Na maioria dos casos, você não pode prever qual é o caminho de pesquisa correto, mas o usuário sabe. Como você sabe se /usr/local/binou /home/bob/bincontém versões de utilitários corrigidas por erros em um unix antigo em que os que /usr/binestão com erros? Deseja realmente incorporar toda a lógica para descobrir se deve /usr/xpg6/binantecipar /bin? Em que posição você quer /usr/gnu/bin? Não redefina PATH, a menos que seu script tenha como alvo um sistema específico.
Não li este tutorial, mas verifiquei uma coisa: desde o início, não é necessário colocar aspas duplas em torno de substituições de variáveis e substituições de comandos. Então, eu não acho que este tutorial seja bom.
unset IFSnão redefine o IFS para seu valor padrão no bash, mas redefine a divisão de campos.