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