Несоответствующий родительский каталог всех символических ссылок

Большая часть моей системы зависит от символических ссылок, так что это очень серьезная проблема. Я делаю что-то вроде следующего

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.

4
задан 8 March 2014 в 14:26

1 ответ

Ваша оболочка помнит когда Вы cd в каталог через символьную ссылку и использование, что информация, когда Вы cd ... Если Вы используете bash или zsh можно выполнить команду set -P для создания cd ведите себя то же как cp (т.е. заставьте его проигнорировать символьные ссылки так, чтобы в Вашем примере cd .. взял бы Вас к /home/user, нет /home/user/test).

Обратитесь к этому вопросу о Unix & Linux SE для получения дополнительной информации включая взлом для создания cp ведите себя как cd вместо противоположного.

1
ответ дан 8 March 2014 в 14:26

Другие вопросы по тегам:

Похожие вопросы: