Repeat after me: If you change IFS, it will break something unexpected.
The problem is that we use IFS to change read's field separator. This
has the side effect of changing how sh(1) splits all string, including
in command parsing functions.
In this case, if you change IFS, the commands are splitted using IFS's
new value, and no longer whitespace. For example:
$ GID_FILES="foo bar" $ set -x $ echo $GID_FILES + echo foo bar foo bar $ IFS=: + IFS=: $ echo $GID_FILES + echo 'foo bar' foo bar
In the first case, it runs echo with two arguments, first is foo, second is bar.
In the second case, it runs echo with one argument, 'foo bar'.