Isn't it usually the case with conflicting options that the last one gets taken as the choice, with choices on the command line overriding choices in the environment?
Grep doesn't seem to follow this convention. Is there a reason why grep doesn't or did it used to and now chooses to do nothing in the case of conflicting options? (eg. -P v. -E) I think the earlier behavior, especially in respect to cmdline value overriding the environment is more useful otherwise lines built up both by successive passes in make files and with those who specify defaults in GREP_OPTIONS, but expect cmd-line usage to override ENV... (coreutils 8.21) (or is grep not part of coreutils these days...hmmm...)
