У меня есть исполняемый файл: /opt/Eclipse/eclipse
. Я хотел бы запустить его с любого пути из терминальной консоли. По этой причине я создаю символическую ссылку:
ln -s /opt/Eclipse/eclipse /usr/bin/eclipse
Но это не помогло запустить eclipse, просто купив набрав ./eclipse из любого места в окне терминала. Система не находит исполняемый файл. Я ожидал, что система найдет eclipse
ссылку в /usr/bin
. Где ошибка в моем мышлении?
Зачем вообще связывать это? Вы можете просто добавить /opt/Eclipse
к PATH
. В ваших ~/.bashrc
:
PATH="/opt/Eclipse:$PATH"
, а затем
source ~/.bashrc
, тогда вы просто сможете запустить
eclipse
Вместо создания символической ссылки вы можете просто добавить псевдоним в свой файл .bashrc
... Для этого вы можете начать с добавления alias eclipse='/file/pathway/to/executable'
в конец вашего файла .bashrc
. Затем вы можете проверить это, запустив source .bashrc
и eclipse
...
bash
(и другие оболочки) поддерживает хэш для быстрого поиска двоичных файлов в $PATH
, когда пользователь выдает команду. Альтернативой может быть сканирование всех этих каталогов каждый раз, когда выдается команда, чтобы выяснить, что это значит. И это дорого.
При определенных обстоятельствах этот хэш не обновляется должным образом. Прочитайте здесь и здесь (раздел hash
) для точных деталей.
Вы, кажется, заметили такой редкий случай, когда фактическое содержимое каталога и значения в этом хэше не синхронизированы. Простой
hash -r
говорит bash
перестроить свой хеш. Это нужно сделать только один раз, если вы хотите оставить окно текущего терминала открытым. Если вы вместо этого закроете и снова откроете окно терминала, это не нужно.