这更像是一种好奇,但我注意到/etc/httpd/logs
符号链接到/var/log/httpd
,但是当我在里面时/etc/httpd/logs
我ls -la
看到:
drwx------ 2 root root 4096 Mar 21 14:58 .
drwxr-xr-x 9 root root 4096 Mar 17 03:10 ..
为何条目不.
显示 lrwx....
?
但当我去看时/etc/httpd
我ls -la
看到:
lrwxrwxrwx 1 root root 19 Mar 4 17:12 logs -> ../../var/log/httpd
答案1
我可以回答一个问题吗?假设您在这里安装的是 RedHat/CentOS...
ls /etc/httpd/
# should return something like:
# conf conf.d logs modules run
cd /etc/httpd/logs/
# Why does this next command fail?
ls ../conf
# ls: cannot access ../conf: No such file or directory
# But this next command works?
cd ../conf
简短的回答是,当你在“内部” /etc/httpd/logs
(符号链接)时,你实际上是在内部/var/log/httpd
,这是一个目录。
cd /etc/httpd/logs/
pwd
# /etc/httpd/logs
pwd -P
# /var/log/httpd
答案2
.
表示当前目录。一旦您cd
进入符号链接,您就进入了目标目录。您看到的不是错误,也不是任何类型的问题。这就是符号链接在 unix 系统中的工作方式。如果您想在列出文件时看到符号链接,请留在实际符号链接所在的父目录中。
答案3
默认情况下,cd
将“跟随”符号链接,但它随后会使用 设置PWD
系统变量/etc/httpd/logs
。这样,当您这样做时,cd ..
它会使用 PWD 变量作为参考。ls
不会。它会获取您所在的物理位置 (/var/log/httpd),就像/bin/pwd
shell 内置 pwd 使用 $PWD 变量一样。
因此,当您使用 cd 进入 /etc/httpd/logs 时,您实际上转到的是 /var/log/httpd。这就是为什么当您执行 时ls -la
,您会看到 . 是一个目录,而不是符号链接。然后,当您使用 cd 退出时,它会记住您位于 /etc/httpd 中,并使用该目录作为参考。
如果您这样做cd -P /etc/httpd/logs
,其中 -P 表示“物理”,您可以看到将cd
PWD 设置为 /var/log/httpd。
(抱歉,我的回答混淆了你的问题和 jscotts 的问题)