chdir() 不影响环境变量 PWD

标签 c linux chdir

当我使用 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)

更改目录/boot

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

最佳答案

是的,如果你想改变环境变量,你必须明确地这样做。

它是 shell 在事件的正常运行中设置和更新 PWD,因此它只反射(reflect) shell 已知的当前目录的变化。

关于chdir() 不影响环境变量 PWD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642050/

相关文章:

创建进程树

linux - gedit 无响应如何保存我的文件?

c - 为什么 Linux 共享库 .so 在内存中可能比在磁盘上大?

pthreads - 在 pthread 中更改目录

从 Windows cmd.exe 更改 Perl 目录

c++ - 静态变量情况下的内存分配

c - 链表中队列的实现

c++ - 显示指定地址的 16 个字节的内容(十六进制)

使用命令行参数计算矩阵行列式的 C 程序

chdir(..) 成功返回 0 并更改目录,但输出 "No such file or directory"