Я скомпилировал пакет с именем xxx.Теперь я удалил файлы, связанные с xxx и установил с помощью репозитория. Но если я наберу команду [root]$ xxx
, появится следующее сообщение
-bash: /usr/local/bin/xxx: No such file or directory
и если Я пытаюсь, [root]$/usr/bin/xxx -v
Это работает. Где я хочу изменить место установки. Или я хочу создать символическую ссылку в /usr/bin/
, которая указывает на /usr/local/bin/xxx
Чтобы ускорить поиск по пути, оболочка поддерживает внутренний кэш, отображающий короткие имена команд и их полный путь. Это, вероятно, то, что вы испытываете здесь.
Вы можете выполнить следующую команду для проверки текущего кэшированного пути для программы:
hash -t xxx
Это будет указывать на отсутствующий исполняемый файл. Вы можете очистить кэш для определенного имени с помощью следующей команды:
hash -r xxx
Обратите внимание, что эта проблема затронет только те сеансы оболочки, которые выполнили команду в старом месте. Любые новые сеансы оболочки должны иметь чистый поисковый кеш и находить команду, как и ожидалось.
Нет, вы не хотите этого делать. Позвольте мне объяснить, почему:
/usr/bin
- это место, где устанавливаются приложения из репозитория. /usr/local/bin
- это место, где ваши скомпилированные приложения установлены по умолчанию.
Когда вы make && make install
заполняете приложение, вам необходимо переопределить приложение репозитория, поэтому /usr/local/bin
уже находится в вашем $PATH
, и оно предшествует /usr/bin
, следовательно, оно выполняется первым. 1113]
Если вы введете which xxx
, он все равно выдаст /usr/local/bin/xxx
, потому что он все еще там, где вы его установили. Выпуск rm $(which xxx)
или, что еще лучше, скомпилируйте приложение еще раз, но на этот раз выпуск make uninstall
от имени root.