2014-05-21 7 views
1

У меня есть drush в /usr/local/bin. Запуск which drush/usr/local/bin/drush. Однако работает drush отображает «-bash: /usr/bin/drush: No such file or directory». Запуск /usr/local/bin/drush работает правильно.Shell не выбирает правильный путь для запуска drush

Мой $ PATH является /usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

[добавлено в редактировать] Прежде чем я имел этот вопрос я удалил копию сценария, который был в /usr/bin/drush. Он был построен неправильно.

Что может быть причиной этой проблемы? Я не хочу вводить /usr/local/bin/drush каждый раз; поэтому /usr/local/bin находится в моем $PATH.

ответ

3

Вы уже запустили drush в этой оболочке, а затем переместили его с /usr/bin на номер /usr/local/bin? Если это так, команда hash покажет, что оболочка запомнила команду в местоположении /usr/bin и предположим, что она там без повторной проверки. Запуск hash -r очистит этот список.

Практический пример:

$ echo >/usr/bin/hello 'echo hello' 
$ chmod +x /usr/bin/hello 
$ hash 
hits command 
    1 /bin/chmod 
$ hello 
hello 
$ hash 
hits command 
    1 /bin/chmod 
    1 /usr/bin/hello 
$ which hello 
/usr/bin/hello 
$ mv /usr/bin/hello /usr/local/bin/ 
$ hello 
bash: /usr/bin/hello: No such file or directory 
$ hash 
hits command 
    1 /usr/bin/which 
    1 /bin/chmod 
    1 /bin/mv 
    2 /usr/bin/hello 
$ which hello 
/usr/local/bin/hello 
$ hash -r 
$ hash 
hash: hash table empty 
$ hello 
hello 
$ hash 
hits command 
    1 /usr/local/bin/hello 
+0

Я думаю, что это может быть моя проблема, но 'хэш -d' только показывает мне список. Кажется, он ничего не понимает. – meustrus

+0

извините, я имел в виду 'hash -r' –

+0

Отлично, это сработало! Так что открытие другого терминала в этом отношении, которое я бы сделал раньше, если бы не был полностью сбит проблемой, с которой я столкнулся. – meustrus