Большая часть моей системы зависит от символических ссылок, так что это очень серьезная проблема. Я делаю что-то вроде следующего
cd
mkdir test
mkdir other
cd test
ln -s ../other/
# So ~/test contains a symlink to ~/other
cd other
dirname `pwd`
# So far so good; prints /home/user/test
ls ..
# Prints the contents of /home/user (???)
cd ..
# Now we're back in /home/user/test
Таким образом, родительский элемент текущего рабочего каталога и ..
ссылаются на два разных местоположения в контексте ls
(а также cp
), но не cd
.
Я наблюдал эту проблему для всех символических ссылок в моей системе, как существующих, так и новых (как в примере выше), а также в нескольких файловых системах. То же самое происходит в nautilus, который теперь показывает хлебные крошки физического пути любой символической ссылки, которую я нажимаю, вместо относительного пути. Насколько мне известно, я не изменил ничего, что могло бы вызвать такую ошибку, и загрузка старого ядра, похоже, не устранила проблему. Я видел много постов, желающих такого поведения, но ни одного исправляющего.
Любые мысли по этому вопросу будут с благодарностью. Я использую Ubuntu Linux 12.10 3.11.0-18-generic.
Ваша оболочка помнит cd
в каталог через символьную ссылку и при использовании той информации когда Вы cd ..
. Если Вы используете bash
, или zsh
можно выполнить команду set -P
для создания cd
, ведут себя то же как cp
(т.е. заставьте его проигнорировать символьные ссылки так, чтобы в примере cd ..
взял бы Вас к /home/user
, не /home/user/test
).
Относятся к [1 112] этот Unix & Linux вопрос о SE для получения дополнительной информации включая взлом для создания cp
ведет себя как [1 111] вместо противоположного.