But this means I can't really write a start script that works (or makes sense) with debug mode both on and off.
I don't think that's a valid use case anyway. Remember, "debug" mode really means "don't daemonize" and nothing more. This for use by a developer who wants to see possible exceptions, print statements and other stuff that goes to stdout/stderr.
Yes. I would much prefer an explicit flag for each, because I run a number of dev Zopes on a number of boxes to which I only have ssh access, and I don't want to have to remember to play games with my stdio, or restart Zope if I restart screen, etc.
Speaking of the (side-)effects of debug mode, what exactly are they? Is it just the automatic re-loading of DTMLFiles and PageTemplates from disk?
I've tried to explain already -- debug mode for ZEO *only* determines whether the ZEO server goes into daemon mode or not. There may be a Zope debug mode, but it's not related (even if it uses the same envariable). --Guido van Rossum (home page: http://www.python.org/~guido/)