Actually it makes sense that the nulls can’t make it through the *nix environment.

Tried #zsh. It keeps the nulls in the internal version of the variable, but results in the same thing being passed to child processes.