一尘不染

chdir()不影响环境变量PWD

linux

当我使用chdir()更改当前工作目录时,为什么getenv(“ PWD”)没有给出当前的工作目录?我还需要setenv(“
PWD”,newDir,1)吗?

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));      
    }
}

输出:(可执行文件的位置是/ home / user)

更改/启动

目录已更改。当前的工作目录是“ / home / user”“ / boot”


阅读 393

收藏
2020-06-07

共1个答案

一尘不染

是的,如果要更改环境变量,则必须明确地执行此操作。

它是PWD在事件的正常运行中进行设置和更新的外壳程序,因此它仅反映该外壳程序已知的当前目录的更改。

2020-06-07