I'm going through a Bash tutorial , and specifically the subject of word splitting. This script, called "args", helps demonstrate word splitting examples: #!/usr/bin/env bash printf "%d args:" $# printf " <%s>" "$@" echo An example: $ ./args hello world, here is "a string of text!" 5 args: <hello> <world,> <here> <is> <a string of text!> So far so good. I understand how this works. However, when I replace IFS with a non-whitespace character, say : , the script does not perform word splitting if I pass the string directly as an argument. $ ./args one:two:three 1 args: <one:two:three> However,