Прочел статью из учебника:
https://nodejs.dev/learn/run-nodejs-scripts-from-the-command-line Рассказано о способах запуска из командной строки программ, написанных на языке JavaScript, в среде выполнения «Node.js».
* * *
Понятно, что в разных операционных системах есть свои разные программы, предоставляющие интерфейс командной строки. В операционной системе «Windows 10 Pro» это, например, программа «cmd.exe», которую часто и называют в операционных системах «Windows» командной строкой, хотя в операционных системах «Windows» это не единственная программа, предоставляющая интерфейс командной строки для работы в операционной системе. (Например, если в программе «Поиск Windows», открываемой щелчком мыши по иконке с увеличительным стеклом возле кнопки «Пуск», ввести фразу «Командная строка», то поиск найдет программу «cmd.exe».)
https://ru.wikipedia.org/wiki/Cmd.exe Другой пример командной строки в операционной системе «Windows 10 Pro» - это программа «Windows PowerShell».
https://ru.wikipedia.org/wiki/PowerShell Таким образом, запуск из командной строки в операционной системе «Windows 10 Pro» программ на языке JavaScript в среде выполнения «Node.js» можно производить как минимум из двух перечисленных выше программ.
* * *
Почему речь идет о запуске из командной строки? Потому что среда выполнения «Node.js» - это программа, заточенная под работу из командной строки. Командная строка - обычный (стандартный) путь работы с этой программой.
При установке среды выполнения «Node.js» на компьютер с операционной системой «Windows 10 Pro» эта программа регистрируется в системе так, чтобы ее можно было вызвать из любого каталога. Я об этом писал в
посте, посвященном установке среды выполнения «Node.js» на компьютер.
После такой установки среды выполнения «Node.js» на компьютер можно запустить свою программу (пусть эта программа хранится в текстовом файле с именем app.js), написанную на языке JavaScript, в среде выполнения «Node.js» из командной строки с помощью следующей команды:
node app.js
* * *
В обсуждаемой здесь статье учебника подразумевается, что команды вводятся в программе, предоставляющей интерфейс командной строки для работы с операционной системой, с названием «Bash». Эта программа предназначена для работы в Unix-подобных операционных системах.
https://ru.wikipedia.org/wiki/Bash Вышеописанный способ запуска программы на языке JavaScript из командной строки с помощью команды node в статье называют «явным» (по-английски «explicitly»). Далее значительную часть статьи учебника занимает описание другого способа запуска программы в среде выполнения «Node.js» (его можно назвать «неявным», так как мы не будем явно вводить команду запуска в командной строке) - с помощью строки с шебангом.
https://en.wikipedia.org/wiki/Shebang_(Unix)
https://ru.wikipedia.org/wiki/Шебанг_(Unix)
Я уже писал про происхождение термина «шебанг» (по-английски «shebang») в посте «
Знак диеза и знак решётки».
Шебанг - это последовательность из двух символов (знака решётки и восклицательного знака) «#!». Строка с шебангом помещается первой строкой в текстовом файле с нашей программой. За шебангом следует прописать абсолютный путь к программе, которая будет интерпретировать (компилировать) текст нашей программы. Строка с шебангом - это способ запуска программ, который существовал до появления среды выполнения «Node.js» и существует сейчас. То есть эта способность присуща не только среде выполнения «Node.js».
Надо отметить, что запуск программ с помощью строки с шебангом существует в Unix-подобных операционных системах. В операционных системах «Windows», как я понимаю, этот способ по умолчанию не работает. (В операционных системах «Windows» можно привязать к файлам с определенным расширением, например, с расширением «.js» определенную программу, которая интерпретирует и запустит программу из файла с таким расширением. Эта возможность похожа на использование строки с шебангом, но она менее гибкая.)
Попытка запуска в операционной системе «Windows 10 Pro» (без установки дополнительных программ, по умолчанию) файла с расширением «.js» из программы «Проводник Windows» или из программ, обеспечивающих командную строку (см. выше), у меня приводит к передаче запускаемого файла с расширением «.js» программе «Windows Script Host», я рассказывал об этом в предыдущем посте «
Запуск в Windows скриптов на языке JScript».
Если расширение «.js» убрать, то при попытке запуска такого файла без расширения в операционной системе «Windows 10 Pro» будет выведено окно со списком приложений и вопросом, какое из этих приложений нужно использовать для обработки указанного файла.
Наличие строки с шебангом не мешает запуску программы на языке JavaScript в среде выполнения «Node.js» в операционной системе «Windows 10 Pro» явным способом (с помощью команды node). Как я понимаю, при этом строка с шебангом считается чем-то вроде комментария (не учитывается) средой выполнения «Node.js».
* * *
Существует множество программ, позволяющих запускать программы Unix-подобных операционных систем на компьютере с операционной системой «Windows». Возможно, установка какой-то из этих программ даст возможность использовать строку с шебангом в операционной системе «Windows». Я решил пока отложить на будущее эксперименты с этими программами. Возможные кандидаты (вообще, есть довольно много вариантов):
Windows Subsystem for Linux (сокращенно «WSL»):
https://ru.wikipedia.org/wiki/Windows_Subsystem_for_Linux Cygwin:
https://ru.wikipedia.org/wiki/Cygwin * * *
Коротко о том, как используют строку с шебангом на практике.
1. Добавление строки с шебангом в файл с текстом программы на языке JavaScript (это кусочек снимка экрана, то есть картинка):
В операционной системе «Windows 10 Pro» я запускаю этот файл из командной строки с помощью команды node. Программа работает, строка с шебангом игнорируется.
В Unix-подобной операционной системе, полагаю, этот файл можно было бы запустить из командной строки просто набрав его название index.js и нажав клавишу «Enter». Операционная система передала бы данный текстовый файл программе, находящейся по абсолютному пути /usr/bin/node (среда выполнения «Node.js»), и та его интерпретировала (компилировала) и выполнила бы.
2. В статье сказано, что не во всех Unix-подобных операционных системах исполняемый файл среды выполнения «Node.js» размещается в папке /usr/bin/. Чтобы создать как можно более универсальную строку с шебангом, используют вызов программы «env» (эта программа предназначена для Unix-подобных операционных систем).
https://en.wikipedia.org/wiki/Env Программа «env» в большинстве Unix-подобных операционных систем содержится в папке /usr/bin/. Если вызывать среду выполнения «Node.js» через эту программу, то строка с шебангом получится более универсальной (применимой к большему числу Unix-подобных операционных систем):
#!/usr/bin/env node
3. Чтобы в Unix-подобных операционных системах запускать текстовый файл с программой так, как описано в первом пункте (с помощью строки с шебангом), пользователь должен иметь право на запуск этого файла. В статье показано, как установить файлу нужные разрешения с помощью программы «chmod» (эта программа предназначена для Unix-подобных операционных систем).
https://ru.wikipedia.org/wiki/Chmod Вот пример из статьи вызова этой программы в командной строке:
chmod u+x index.js
Здесь символом u обозначен владелец файла (то есть человек, создавший данный файл), символом + определяется операция добавления определенных прав и символом x обозначено право на запуск файла на выполнение.