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