Большая часть моей системы зависит от символических ссылок, так что это очень серьезная проблема. Я делаю что-то вроде следующего
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
).
Обратитесь к этому вопросу о Unix & Linux SE для получения дополнительной информации включая взлом для создания cp
ведите себя как cd
вместо противоположного.