为什么我的 CD 命令无法在自制 shell 上运行?

为什么我的 CD 命令无法在自制 shell 上运行?

我用 C 语言编写了一个非常基本的 shell。它读取输入,然后使用它运行它system(lineCopy);(lineCopy 是输入的副本)。所有命令都可以在其中正常运行,除了cd.当我尝试cd访问不同的目录时,它只是保留在当前目录中。如果我尝试cd访问一个不存在的目录,它会说,正如它应该的那样sh: 1: cd: can't cd to /some_nonexistant_directory。然而,当我尝试 cd 到确实存在的目录时,它会读取该命令,但随后保留在同一目录中。我存储当前 PWD 的变量正在不断更新,所以不可能是这样。所有其他命令都可以完美运行。但为什么cd不呢?

答案1

尝试更改环境变量 - 这也不起作用。系统继承环境和当前工作目录。因此每个系统调用都会从其父系统继承当前工作目录。

相关内容