Оболочка не может найти исполняемый файл при удалении дубликата имени из PATH?

Я скомпилировал пакет с именем 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

3
задан 23 September 2011 в 09:15

2 ответа

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

Вы можете выполнить следующую команду для проверки текущего кэшированного пути для программы:

hash -t xxx

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

hash -r xxx

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

0
ответ дан 23 September 2011 в 09:15

Нет, вы не хотите этого делать. Позвольте мне объяснить, почему:

/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.

0
ответ дан 23 September 2011 в 09:15

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

Похожие вопросы: