Переменные среды в символических ссылках

Можно ли использовать переменную $HOME или другую переменную среды в символических ссылках?

Я знаю об использовании относительных путей ../../.config, но иногда для многих ../:) что-то вроде ~/.config было бы более комфортно или использовало бы $HOME.

Edit:

habbie ответ на psmears комментарий - это ответ, извините, мой вопрос был неполным.

В то время как (как показывают другие ответы) вы можете использовать переменные среды при создании символических ссылок (как и с любой командой оболочки!), вы фактически не можете иметь ссылки на переменные среды (или "~" ) в самой символической ссылке

Ответ 1

Символьные ссылки обрабатываются ядром, а ядру не нужны переменные окружения. Итак, нет.

Ответ 2

да. без проблем. фактически вы фактически не используете переменную $HOME в своей ссылке, поэтому она не будет работать с интеллектуальными решениями для групп пользователей, например. Переменная передается оболочкой при выполнении команды, а содержимое переменной используется в ссылке.

ln -s ~/test /tmp/test 

разлагается на

/<path>/<to>/home/test -> /tmp/test

Ах. и будут работать только переменные окружения человека, вызывающего ln. Вы не можете хранить переменные среды других народов в ссылке. Переменные расширены до вызова команды.

Ответ 3

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

ln -s '$HOME/file/or/folder' newname

Это даст,

newname -> $HOME/file/or/folder

а не расширять его до локального набора $HOME.

[Обратите внимание, что это зависит от системы - не все системы поддерживают символические ссылки)

Ответ 4

Ближайшим, к которому я пришел, является использование файловой системы FUSE. Очень просто использовать fusepy для написания настраиваемой файловой системы passthrough, которая может читать переменные среды при определении того, какой файл должен давать. Разумеется, он получает только переменные окружения процесса, которые устанавливают сквозную систему, поэтому это не так полезно, как могло бы быть.

Ответ 5

Да, вы можете.

ln -s $HOME/file/or/folder newname

Вы можете также установить свои собственные переменные и использовать их. Добавьте в свой .bashrc(или .bash_profile):

export $MYPATH=/your/path