Может ли GNU Stow использовать каталог столов, который является символической ссылкой?

Рассмотрим этот сценарий.

#! /usr/bin/env bash mkdir -p target mkdir -p mydir/package/ touch mydir/package/file ln --symbolic mydir mylink file mylink stow --verbose --dir=./mylink --target=./target package file target/file 

Выход

 mylink: symbolic link to mydir LINK: file => ../mydir/package/file target/file: symbolic link to ../mydir/package/file 

Перед запуском stow это выглядит так:

 . ├── mydir │ └── package │ └── file ├── mylink -> mydir └── target 

После запуска mylink , по mylink , я ожидал, что это будет выглядеть так:

 . ├── mydir │ └── package │ └── file ├── mylink -> mydir └── target └── file -> ../mylink/package/file 

Однако вместо этого он выглядит так:

 . ├── mydir │ └── package │ └── file ├── mylink -> mydir └── target └── file -> ../mydir/package/file 

Кажется, что команда stow разрешает реальную траекторию каталога пакета, поэтому вместо указания на ../mylink/package/file она указывает на ../mydir/package/file .

Это имеет смысл избегать слишком большой косвенности, но это происходит тихо и может не всегда быть желательным. Есть ли способ обойти это поведение?

Пока нет.

Внутри, stow находят абсолютный канонический путь данного пути, используя chdir для перемещения в путь, а затем используйте функцию getcwd () из модуля POSIX, который является интерфейсом Perl для POSIX getcwd () , чтобы получить абсолютное имя пути.

Как указано в POSIX, имя пути не должно содержать никаких компонентов . или .. , или являются символическими ссылками.