没有目录A。

没有目录A。

在我的主目录中,有一个名为的文件夹,symlinks其中包含我的所有符号链接。我已将此文件夹添加到我的 中CDPATH,以便我可以执行以下操作:

~$ cd FarAwayDirectory
~/symlinks/FarAwayDirectory$

我注意到,如果我pwd,我会得到:

~/symlinks/FarAwayDirectory -> A

而不是:

.../.../.../FarAwayDirectory ->

这就是我通过连续的得到的cd

所以我的问题是:正在目录中工作A与在目录中工作相同

答案1

是的。在目录 A 中工作与在目录 B 中工作相同。

符号链接是指向另一个文件的特殊文件。~/symlinks/FarAwayDirectory实际上没有任何自己的数据(除了基本文件系统元数据)。相反,它实际上指向您符号链接到的目录。

您可以通过在中创建文件~/symlinks/FarAwayDirectory并确认该文件存在于实际目录的完整路径中来测试这一点。

答案2

pwd是的,如果您使用中内置的版本bash,您将得到输出 A。

但尝试显式调用独立的二进制版本pwd

$ /bin/pwd

我想你会看到你的输出 B.

基本上这是因为bash记住您是通过符号链接到达目录的,因此默认情况下以“逻辑”形式(您的输出 A)向您呈现路径。如果您希望在所有类似情况下都显示“物理”路径(您的输出 B),您可以使用set -P它来实现。

或者,如果您想根据具体情况进行操作,bash内置cd命令还支持“-L”和“-P”选项。

答案3

没有目录A。

它是一个符号链接,不是目录。工作目录是同一个目录在这两种情况下。唯一的区别在于PWD变量的值,这反过来会影响某些命令的内容报告作为当前目录的名称。例如,多个 shell 中的内置pwd命令将报告 shell 变量的值,PWD除非被告知忽略它。外部pwd命令(如果使用选项告知这样做-L)将检查它所继承的环境变量的值PWD,并且如果它作为当前目录的名称检出,也会使用它。

进一步阅读

相关内容