Am I right that read first second is a subprocess of the current shell process? If yes, why don't we need export IFS=";"?
Não, read
é uma função de bultin bash . Nenhum subshell ou subprocesso é criado aqui, portanto, não é necessário exportar IFS
.
why is IFS empty?
Porque você não usa aspas duplas. Você alterou o valor do IFS para ;
, portanto, quando você echo $IFS
, após $IFS
ser expandido para ;
, o shell executa spliting e globbing de palavras, com ;
como separador. Então nada é impresso.
Tente:
$ IFS=";"
$ printf "%s\n" $IFS
$ printf "%s\n" "$IFS"
;
Nota