Variant Symlinks это символические ссылки, которые формируются с помощью подстановки специальных переменных, включённых в путь. Небольшой пример: # ln -s '${var}' link # varsym var=/tmp Здесь ${var} - это "переменная". Она заменится на значение "/tmp" и символическая ссылка будет указывать на каталог (или файл) /tmp. Переменные, созданные командой varsym не имеют отношения к переменным окружения шелла. Переменная может быть вставлена в любое место пути, например '/home/${user}/file'. Их может быть несколько в одном имени. Они никак не привязаны к ссылкам, т.е. существуют независимо от ссылки. Переменные, используемые в variant symlinks бывают трёх типов или уровней (в порядке возрастания приоритета): * системы - общие для всей системы; * пользователя - доступные конкретному пользователю системы; * процесса - доступные только одному процессу. Приоритет влияет на то, какое значение будет выбрано, в случае если заданы переменные с одинаковыми именами на разных уровнях. Уровень процесса имет смысл, только если вы используете такие переменные в своей программе (при помощи системных вызовов), так как после завершения программы, значения будут утеряны. Так же есть возможность установить переменные для родительского процесса, например, для шелла. Переменные уровня пользователя доступны только пользователю для которого они заданы (суперпользователь может задавать и читать их, но в файловых операциях будут использоваться только его собственные переменные). В изолированных окружениях jail доступны только переменные уровня системы и процесса. Но переменные уровня системы являются локальными для каждого jail'а, т.е. из jail не доступны переменные реальной системы. Таким образом, одна и та же символическая ссылка может указывать на совершенно разные файлы/каталоги для различных пользователей, jail'ов и программ. Патчи основаны на реализации variant symlinks из DragonFly BSD. (c) Andrey V. Elsukov,