Ответ 1
Символьные ссылки обрабатываются ядром, а ядру не нужны переменные окружения. Итак, нет.
Можно ли использовать переменную $HOME или другую переменную среды в символических ссылках?
Я знаю об использовании относительных путей ../../.config
, но иногда для многих ../
:) что-то вроде ~/.config
было бы более комфортно или использовало бы $HOME.
Edit:
habbie ответ на psmears комментарий - это ответ, извините, мой вопрос был неполным.
В то время как (как показывают другие ответы) вы можете использовать переменные среды при создании символических ссылок (как и с любой командой оболочки!), вы фактически не можете иметь ссылки на переменные среды (или "~" ) в самой символической ссылке
Символьные ссылки обрабатываются ядром, а ядру не нужны переменные окружения. Итак, нет.
да. без проблем. фактически вы фактически не используете переменную $HOME в своей ссылке, поэтому она не будет работать с интеллектуальными решениями для групп пользователей, например. Переменная передается оболочкой при выполнении команды, а содержимое переменной используется в ссылке.
ln -s ~/test /tmp/test
разлагается на
/<path>/<to>/home/test -> /tmp/test
Ах. и будут работать только переменные окружения человека, вызывающего ln. Вы не можете хранить переменные среды других народов в ссылке. Переменные расширены до вызова команды.
Если вы не хотите расширять переменную в ссылке, вы можете разместить вокруг нее одинарные кавычки,
ln -s '$HOME/file/or/folder' newname
Это даст,
newname -> $HOME/file/or/folder
а не расширять его до локального набора $HOME.
[Обратите внимание, что это зависит от системы - не все системы поддерживают символические ссылки)
Ближайшим, к которому я пришел, является использование файловой системы FUSE
. Очень просто использовать fusepy
для написания настраиваемой файловой системы passthrough, которая может читать переменные среды при определении того, какой файл должен давать. Разумеется, он получает только переменные окружения процесса, которые устанавливают сквозную систему, поэтому это не так полезно, как могло бы быть.
Да, вы можете.
ln -s $HOME/file/or/folder newname
Вы можете также установить свои собственные переменные и использовать их. Добавьте в свой .bashrc(или .bash_profile):
export $MYPATH=/your/path