4

我有一个关于为什么会发生这种情况的一般性问题,以及对“pwd”的误解。

您从目录 /test 开始,其中有 /test/folder1。

文件夹 1 有:file1.txt

在 2 个单独的终端中,我们“cd /test”,执行“ls”并发现 folder1 作为这两个终端的输出。

我们现在在终端一上“cd folder1”。2 号航站楼仍在 /test 中。

如果我们然后在终端 2 上运行“mv folder1 folder2”并运行“ls”,我们将得到 folder2 作为输出。清楚地表明我们的 mv 是成功的。

但是,在终端 1(位于 /test/folder1 中)内,如果我们运行“pwd”,则输出仍然是 /test/folder1。即:它并不反映我们已经将文件夹移动到 /test/folder2。

为什么会这样?我可以理解为什么如果我们要编辑 file1.txt 它只是文件系统中的一个指针,它应该指向同一个文件。事实上,您可以在每个终端中修改文件并在另一个终端中查看编辑。但是,为什么“pwd”命令不再反映该目录的实际路径?

谢谢!

4

2 回答 2

5

假设您使用的是 bash,pwd它会向您显示PWD环境变量的值,当您使用cd. folder1目录更改名称不会导致 bashPWD更新。但是,您可以找到目录已更改名称的证据:

  • pwd -P将显示目录的新名称。
  • ls -l /proc/self/cwd将链接到新名称。
于 2014-03-04T20:09:18.087 回答
1

我认为只是第一个终端没有理由重新评估它的位置。如果您在第一个终端中执行以下命令

cd .

您将看到您当前的工作目录确实随着重命名 ( mv) 发生了变化。

于 2014-03-04T20:02:34.100 回答