Le 29/12/2017 à 09:47, Bart Schaefer a écrit : > You're missing a semicolon after the "C". That's the reason you get Thank you. For some reason however, the seconde run of `export LANC=C; enable -r else; if true; then echo 'yep'; else echo 'nop'; fi; disable -r else` will return an error message with the system local anyway: % enable -r else; % export LANC=C; enable -r else; if true; then echo 'yep'; else echo 'nop'; fi; disable -r else yep % export LANC=C; enable -r else; if true; then echo 'yep'; else echo 'nop'; fi; disable -r else yep zsh: else: commande inconnue. > If I understand your question, the answer is "no": you can't execute > the front part of an "if" until the "fi" has been read. See my > previous email "fully parsed before executed." I'm rather estonished by this lake of possibility to make the equivalent of an "\n" in the middle of a line, but OK. So the idea would be to have something like % whence -w else else: reserved % enable -r else; "\n" whence -w else; if true; then echo 'yep'; else echo 'nop'; fi; disable -r else else: reserved yep % whence -w else else: none % enable -r else; "\n" whence -w else; if true; then echo 'yep'; else echo 'nop'; fi; disable -r else else: reserved yep But "\n" doesn't work here as a substitution of an effective linefeed. > (Well, you could switch to csh, which does execute every line as it > goes along, even in complex structures. But no, not in zsh.) Nice to know, thank you.