When I use chdir() to change the current working directory, why doesn\'t the getenv(\"PWD\") give the present working directory? Do I need to setenv(\"PWD\",newDir,1) also?<
The PWD environment variable isn't automatically updated by chdir
, so you'd have to do it explicitly using setenv
. However, the getcwd
function should still report the updated value automatically.
"getenv" gets PWD from the environment that the program started from. "PWD" equalling the current working directory is something maintained by the shell, and since you changed directory in the program you started from the shell rather than the shell, PWD
hasn't changed in the environment.
You'll probably also notice that when your program ends, the shell is still at the directory you started at. The shell hasn't changed directory, so PWD hasn't changed.
Yes, if you want to change the environment variable, you have to explicitly do that.
It's shell that sets and updates PWD
in the normal run of events, so it only reflects changes of the current directory known to the shell.