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

Вот мой код:

#!/usr/bin/node                                                                                                                                                      

 console.log('HELLO')

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

$ test

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

/usr/bin/node test

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

HELLO

Почему мой скрипт не дает таких же результатов?


person dopatraman    schedule 25.09.2014    source источник


Ответы (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

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

person ridiculous_fish    schedule 25.09.2014