Я знаю только два пути: alias foo=bar
и function foo() { bar }
.
Причина, по которой я спрашиваю, заключается в том, что - внезапно в одной из моих сессий bash - я не могу выполнить ln
команду, потому что bash
происходит ошибка -bash: /usr/local/.../ln: No such file or directory
(где /usr/local/.../
- одна из записей в моей PATH
переменной среды).
Это не PATH
проблема, потому что, если я запускаю, which ln
он выводит ожидаемый двоичный файл /usr/bin/ln
(который я могу запустить нормально, если я укажу абсолютный путь).
Я также проверил ln
в моих alias
и function
декларациях, и там ничего нет:
$ declare -f | grep ln
$ alias | grep ln
Проблема только происходит в одной сессии bash. Если я запускаю новую оболочку, она снова работает нормально, но я хочу знать, что вызвало эту проблему внезапно в этой конкретной сессии bash.
Любые идеи относительно того, что может быть причиной этого?
type ln
я получаю,ln is hashed (/usr/local/.../ln)
что, кажется, является проблемой, но что это означает именно, что это "хешируется"? Я никогда не слышал об этой функции в Bash.hash -l
команды. Он динамически создается при использовании команд.hash -r
чтобы сбросить хеш-таблицу команд в путь, иln
теперь вернулся к рабочему состоянию.