Что: c713c96e60a555f4a50721a0b2b4a3041ef55d1e Когда: 2020-12-19 13:55:47+03:00 ------------------------------------------------------------------------ Темы: redo tip ------------------------------------------------------------------------ Символические ссылки и CWD/PWD https://unix.stackexchange.com/questions/79571/symbolic-link-recursion-what-makes-it-reset/79621#79621 http://harmful.cat-v.org/software/symlinks Для goredo мне отправили патч http://www.git.cypherpunks.ru/?p=goredo.git;a=commitdiff;h=79b9219363d2f69f8fd209ec5ee3794759fa7396 чтобы использовать os.Getwd() вместо системного вызова getwd(), ибо, когда рабочая директория находится в иерархии с символическими ссылками, то, из-за того что getwd() возвращает физический путь, вычисление относительного пути до целей начинает содержать массу ../../ всяких. Насколько понял, когда есть символические ссылки, то всё может происходить недетерминированно, ибо появляется не чёткая иерархия в файловой системе, а граф, где есть не один путь "следования". Ссылка на stackexchange содержит описание работы getwd() и того, что внутри shell-а запросто есть и своё понимание "логического" пути, с которым и идёт работа для удобства пользователя. Вне shell всё может быть совсем по другому. Опять же, насколько понял, для redo действительно лучше просто использовать os.Getwd() и дальше уж "как повезёт". Среди тестов взятых из apenwarr, ровно в одном ровно одну проверку я закомментировал, связанную с хождением по иерархии где есть символические ссылки. Немного повозился с этим тестом снова, но... в интерактивном режиме zsh redo-ifchange ведёт себя одним образом, не в интерактивном уже другим. /bin/sh работа тоже как-то отличалась. В общем, тест явно делает ожидания от поведения именно shell-а, а не реализации redo (ну или совокупности какого-то поведения shell и реализации). Чёрт с ним. ------------------------------------------------------------------------ оставить комментарий: mailto:comment@blog.stargrave.org?subject=Re:%20%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B8%20%D0%B8%20CWD%2FPWD%20%28c713c96e60a555f4a50721a0b2b4a3041ef55d1e%29 ------------------------------------------------------------------------ Сгенерирован: SGBlog 0.34.0