当我使用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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:(可执行文件的位置是/ home/user)
changeir/boot
目录已更改.目前的工作目录是"/ home/user""/ boot"
是的,如果要更改环境变量,则必须明确地执行此操作.
它是PWD在正常的事件运行中设置和更新的shell ,因此它只反映shell已知的当前目录的更改.