在我的主目录中,有一个名为的文件夹,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
,并且如果它作为当前目录的名称检出,也会使用它。