Почему моя символическая ссылка на /usr/local/bin не работает?

Установил Юлю локально, распаковав в папку. Затем я попытался добавить исполняемый файл в /usr/local/binтак как я не хочу изменять $PATH.

      sudo ln -s bin/julia-1.5.3/bin/julia /usr/local/bin/julia

Если я сейчас выполню Julia в новом окне оболочки, появится следующее сообщение:

      $ julia
zsh: command not found: julia

$ ls -l /usr/local/bin/
total 12
lrwxrwxrwx 1 root root 25 Jan  1 10:08 julia -> bin/julia-1.5.3/bin/julia

Итак, очевидно, что символическая ссылка существует, но моя оболочка сообщает мне, что команда не найдена. В чем проблема?

1 ответ

Решение довольно простое. Используйте здесь абсолютную символическую ссылку , чтобы первый аргумент ln -sвместо этого полный путь.

      sudo ln -s /home/user/bin/julia-1.5.3/bin/julia /usr/local/bin/julia

Теперь он открывается правильно и выполняется, как ожидалось.

Второе и более сложное решение — использовать относительную символическую ссылку. Однако это должно быть относительно папки, в которой будет создана символическая ссылка. Таким образом, начиная с /usr/local/binнужно подняться на три папки вверх, чтобы оказаться в /а затем спускайтесь в соответствующую папку.

      sudo ln -s ../../../home/user/bin/julia-1.5.3/bin/julia /usr/local/bin/julia

Обновление: комментарий ниже верен, и я соответствующим образом отредактировал ответ. Относительные симлинки — это хорошо и существуют по уважительным причинам, однако здесь они не имеют никакого смысла, так как сильно усложняют путь.

Другие вопросы по тегам