When combining several input streams into a single file, so each part can be separated later, you want to separate the parts with a unique delimiter:
cat <<'THISISADELIMITER' . . . . . . . . stuff . . . . THISISADELIMITERHowever, there is no guarantee that the delimiter you choose isn't already a line in the file. You could embed ends-of-file in the file, but reading past ends-of-file often causes strange behavior.
Therefore:
Prepend every line of the archive file with any character different from the first character of the delimiter; that is sufficient to make aliasing impossible:
#!/bin/sh PATH=/bin:/usr/bin echo '# To unbundle, sh this file' for i do echo "echo $i 1>&2" echo "sed 's/.//' >$i <<'//GO.SYSIN DD $i'" sed 's/^/-/' $i echo "//GO.SYSIN DD $i" doneAs a result, there is no aliasing; the archive file can have explicit delimiters that make it more self-documenting and easy to persue with an editor.
Many thanks to BrianKernighan, who is author of the bundle script.