Двоичный файл в/usr/local/bin

Я надеюсь видеть, где команда расположена:

xxx:~/mono/mono-2.6.7$ which mono
/usr/local/bin/mono

Если я выполняю его непосредственно, без проблем:

xxx:~/mono/mono-2.6.7$ /usr/local/bin/mono -V
Mono JIT compiler version 2.6.7 (tarball Mon Aug  2 16:01:50 UTC 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
....

Но если я выполняю команду без пути, это не может найти его:

xxx:~/mono/mono-2.6.7$ mono
bash: /usr/bin/mono: No such file or directory

В/usr/bin нет никакого моно файла:

xxx:~/mono/mono-2.6.7$ ls -l /usr/bin/mono
ls: cannot access /usr/bin/mono: No such file or directory

Вот мой путь:

xxx:~/mono/mono-2.6.7$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Разве это не ищет каждый каталог, разделенный двоеточиями? Таким образом, разве это не должно находить моно в/usr/local/bin?

Если я вхожу в систему как корень, он работает. Я могу выполниться моно на командной строке, и она находит его. Полномочия:

xxx:~/mono/mono-2.6.7$ ls -l /usr/local/bin/mono
-rwxr-xr-x 1 root root 8452592 2010-08-02 16:23 /usr/local/bin/mono

Пользователь, я использую не часть правильной группы?

3
задан 02.11.2011, 03:09

3 ответа

Bash сохраняет кэш местоположений команды в памяти, так, чтобы это не делало целого исследования ПУТИ каждый раз, когда Вы запускаете команду. На Вашей исходной сессии удара удар ранее запомнил это mono был /usr/bin/mono. Затем Вы удалили /usr/bin/mono и добавил /usr/local/bin/mono, но Ваш рабочий удар все еще имел старое расположение в своем кэше.

Можно управлять кэшем местоположения команды с hash встроенный. В особенности hash -r очищает кэш.

which внешняя команда, таким образом, она не использует кэш удара и выполняет поиск ПУТИ каждый раз. Вы, возможно, также использовали type, который является встроенным и поэтому использует кэш поиска.

7
ответ дан 07.12.2019, 23:28

Возможно, Вы псевдоним определили для моно? Выезд, что следующие файлы в Вашем корневом каталоге: .bashrc, .profile, .login или .bash_profile

... не содержит что-то вроде этого

 alias mono="/usr/bin/mono"

Это может также быть расположено в/etc/bashrc или/etc/profile.

Псевдоним команды показывает все в настоящее время определяемые псевдонимы.

0
ответ дан 07.12.2019, 23:28

Я вышел из системы и затем вошел в систему снова, и это работало. Я, должно быть, делал что-то глупое. Но, это работает!

0
ответ дан 07.12.2019, 23:28

Теги

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