2014-09-25 2 views
0

Вот мой код:Не удается запустить скрипт в среде узла (рыба оболочки)

#!/usr/bin/node                                      

console.log('HELLO') 

Этот файл был назван test. Нет расширения. Если я попробую запустить его в моем терминале так

$ test 

Нет выхода. Однако, если я бегу

/usr/bin/node test 

я получить желаемый результат:

HELLO 

Почему мой сценарий не дает те же результаты?

ответ

1

Когда вы вводите команду, и это не абсолютный или относительный путь (например, ../test, или/bin/test или ~/test), то оболочка должна искать исполняемый файл. Он делает это, просматривая каталоги, указанные в $ PATH. Вы можете распечатать его:

> echo $PATH 
/usr/local/bin /usr/bin /bin /usr/sbin /sbin 

Обратите внимание, что текущий каталог . не находится в PATH. Это преднамеренно: если PATH содержит ., возможно, что команда может быть случайно или злонамеренно переопределена файлом в текущем каталоге.

Вы можете спросить, какую команду вы получите:

> which test 
/bin/test 

Вот что запускаемый, и поэтому нет никакого вывода.

Чтобы запустить команду, которого нет в PATH, использовать абсолютный или относительный путь:

./test 

Это должно исправить вашу проблему.

Смежные вопросы