Ответ 1
Важно знать, что
ln -s SOURCE TARGET
создать символическую ссылку TARGET, которая символически связана со строкой SOURCE
. Если SOURCE
- относительный путь (то есть он не начинается с /
), то он интерпретируется относительно каталога, в котором находится TARGET
. Если это абсолютный путь, то это абсолютный путь. Если это строка, которая не может быть путём или содержит несуществующий путь или файл, или в противном случае это не допустимая строка пути, неважно. ln -s
не проверяет, существует ли SOURCE или даже допустимый путь. Вы можете хранить почти любую короткую строку, которую вы хотели в дирент.
Итак, когда вы это сделаете:
$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser
что вы делаете, грубо:
- создайте запись каталога внутри подкаталога
bin
с именемtorbrowser
. - Сделайте эту новую запись каталога символической ссылкой (символической ссылкой) на (относительный) путь
torbrowser/start-tor-browser
Новая символьная ссылка является круговой. ~/bin/torbrowser
связан с ~/bin/torbrowser/start-tor-browser
, что означает, что вам нужно следовать символической ссылке, чтобы разрешить символическую ссылку. Если вы попытаетесь использовать его, вы увидите:
$ cat ~/bin/torbrowser
cat: /home/joshlf13/bin/torbrowser: Too many levels of symbolic links
$
Иногда - часто, даже - способность символически ссылаться на относительный путь чрезвычайно удобна. Обычное использование избавляет от номеров версий:
$ ln -s apps/my_fancy_app_v2.63.1 apps/my_fancy_app
Теперь не только я могу вызвать my_fancy_app, не запомнив его строку версии, я также могу переместить всю папку в другое место, не нарушая символическую ссылку:
$ mv apps /usr/local/apps
Но в других случаях - как в вашем примере, я думаю - вам нужно символически ссылаться на абсолютный путь.
Что касается разрешений, символические ссылки всегда имеют разрешения lrwxrwxrwx
, потому что фактические разрешения, используемые файловыми операциями, являются правами на реальный файл. (Вы можете думать об этом как о значении того, что любой может следовать символической ссылке, но это не совсем так: им также нужны разрешения на чтение для любой директории, в которой им нужно следовать. Точнее, любой, кто может видеть символическую ссылку, может видеть ее имя указывает на, даже если у них нет доступа к файлу с этим именем.