Несоответствия с какой командой

253
Dan Prince

Я использую инструмент n, чтобы обновить мою текущую версию узла, но происходит нечто странное.

Я запустил, sudo n latestкоторый теоретически выбирает последнюю версию Node ( v0.12.0и устанавливает ее там, где она уже есть $PATH.

Тем не менее, работает node -vшоу v0.10.25. Я подумал, что где-то на моем пути была другая версия exe-узла.

which nodeпоказывает /usr/local/bin/node.

$ cd /usr/local/bin/node $ node -v v0.10.25 $ ./node -v v0.12.0 

Он там и установлен и /usr/local/binесть у меня $PATH.

В каком случае будет whichуказывать на неправильный двоичный файл?

Я перезапустил bash и убедился, что в /binили нет двоичных файлов узла dud /usr/bin. Также убедился, что это не символическая ссылка.

$ ls -lah | grep node -rwxr-xr-x 1 root root 20M Feb 14 14:56 node 

И это определенно был бинарный файл.

$ file node node: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 

Идеи?

1

1 ответ на вопрос

1
Dan Prince

Вы ищете сложные решения, и вы упускаете очевидное.

Я переключился, zshчтобы посмотреть, была ли проблема с bash. Версия узла была правильной.

Я был alias node=nodejsв ~/.bash_aliases...

Очевидно, whichэто не учитывается. Я думаю, что была некоторая проблема с пакетом apt-get для Node с Ubuntu, который создавал nodejsдвоичные файлы, а не node. Очевидно, я бы назвал это псевдонимом, а не символической ссылкой.

Урок выучен.

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