http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59484
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kargl at gcc dot gnu.org --- Comment #1 from kargl at gcc dot gnu.org --- (In reply to Reinhold Straub from comment #0) > Please compile: > > program test > implicit none > > character(len=11) :: cmdmsg,str > integer :: exitstat,cmdstat,status,length > logical :: wait > wait = .true. > cmdmsg = "ok" > > call execute_command_line("export newvar='some text'") > print *,"result 1:", exitstat, cmdstat, cmdmsg > call get_environment_variable("newvar",str,length,status) > print *,"1: ",str,length,status > print *,"expected:","some text",9,0; print *,"" > Looks like an invalid program to me. exitstat, cmdstat, and cmdmsg are undefined in the 1st print statement. execute_command_line(command) executes the 'command' in a child process. You've managed to export newvar in the child's environment. By the time you use get_environment_variable, the child process has completed and more importantly it has not changed its parent environment. If you want to change the parent's environment, you'll most likely need to use ISO C interop and the setenv function from the C lib.