Я надеюсь видеть, где команда расположена:
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
Пользователь, я использую не часть правильной группы?
Bash сохраняет кэш местоположений команды в памяти, так, чтобы это не делало целого исследования ПУТИ каждый раз, когда Вы запускаете команду. На Вашей исходной сессии удара удар ранее запомнил это mono
был /usr/bin/mono
. Затем Вы удалили /usr/bin/mono
и добавил /usr/local/bin/mono
, но Ваш рабочий удар все еще имел старое расположение в своем кэше.
Можно управлять кэшем местоположения команды с hash
встроенный. В особенности hash -r
очищает кэш.
which
внешняя команда, таким образом, она не использует кэш удара и выполняет поиск ПУТИ каждый раз. Вы, возможно, также использовали type
, который является встроенным и поэтому использует кэш поиска.
Возможно, Вы псевдоним определили для моно? Выезд, что следующие файлы в Вашем корневом каталоге: .bashrc, .profile, .login или .bash_profile
... не содержит что-то вроде этого
alias mono="/usr/bin/mono"
Это может также быть расположено в/etc/bashrc или/etc/profile.
Псевдоним команды показывает все в настоящее время определяемые псевдонимы.
Я вышел из системы и затем вошел в систему снова, и это работало. Я, должно быть, делал что-то глупое. Но, это работает!