Переменные среды в символических ссылках - PullRequest
19 голосов
/ 08 октября 2010

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

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

Редактировать:

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

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

Ответы [ 5 ]

39 голосов
/ 08 октября 2010

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

2 голосов
/ 07 июля 2011

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

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

Это даст

newname -> $HOME/file/or/folder

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

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

2 голосов
/ 08 октября 2010

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

ln -s ~/test /tmp/test 

расширяется до

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

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

0 голосов
/ 24 ноября 2016

Самое близкое, что я смог получить, - это использование FUSE файловой системы. Довольно просто использовать fusepy для написания пользовательской сквозной файловой системы, которая может считывать переменные среды при определении того, какой реальный файл предоставить. Конечно, он получает только переменные среды процесса, который смонтировал систему сквозного прохождения, поэтому он не так полезен, как мог бы.

0 голосов
/ 08 октября 2010

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

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

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

export $MYPATH=/your/path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...