Это скорее любопытство, но я заметил /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
Могу я ответить вопросом? Предполагая, что вы здесь устанавливаете 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
.
указывает текущий каталог. Однажды ты cd
на символическую ссылку, вы находитесь в целевом каталоге. То, что вы видите, не является ошибкой или какой-либо проблемой. Вот как работают символические ссылки в системах unix. Если вы хотите видеть символическую ссылку при перечислении файлов, оставайтесь в родительском каталоге, где существует фактическая символическая ссылка.
По умолчанию, cd
собирается "следовать" за символической ссылкой, но затем устанавливает PWD
системная переменная с /etc/httpd/logs
. Таким образом, когда вы это сделаете cd ..
он использует переменную PWD для справки. ls
не будет. Он получает физическое местоположение того места, где вы находитесь (/ var / log / httpd), как и /bin/pwd
но встроенный 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 вопроса)