chdir () no afecta la variable de entorno PWD

Cuando uso chdir () para cambiar el directorio de trabajo actual, ¿por qué getenv ("PWD") no da el directorio de trabajo actual? ¿Necesito setenv ("PWD", newDir, 1) también?

void intChangeDir(char *newDir)
{
    if( chdir(newDir)==0 )              
    {
        printf("Directory changed. The present working directory is \"%s\" \"%s\"\n",getenv("PWD"),getcwd(NULL,0));
    }
    else
    {
        printf("Error changing dir %s\n",strerror(errno));      
    }
}

Salida: (la ubicación del ejecutable es / home / user)

changeir / boot

Directorio cambiado. El directorio de trabajo actual es "/ home / user" "/ boot"