Главный ответ
Да, чтобы ответить на ваш вопрос, можно использовать JavaScript в качестве «обычного» языка сценариев из командной строки, без браузера. Поскольку другие еще не упомянули об этом, я вижу, что стоит упомянуть:
В системах на основе Debian (включая Ubuntu, Linux Mint и aptosid / sidux, по крайней мере), кроме опций установки Rhino и других уже упомянутых, у вас есть другие варианты:
Установите пакет libmozjs-24-bin
, который предоставит вам движок Mozilla Spidermonkey в командной строке в виде простого js24
, который также можно использовать в качестве интерактивного интерпретатора. (24
в названии означает, что оно соответствует версии 24 Firefox).
Установите пакет libv8-dev
, который предоставит вам движок Google V8. В качестве одного из примеров он имеет файл /usr/share/doc/libv8-dev/examples/shell.cc.gz
, который можно распаковать и скомпилировать очень просто (например, g++ -Os shell.cc -o shell -lv8
).
Установите пакет nodejs
, и он будет доступен как в виде исполняемого файла nodejs
, так и в качестве альтернативы (в смысле Debian) для обеспечения js
исполняемый файл. Компиляция JIT предоставляется в качестве любезности V8.
Установите пакет libjavascriptcoregtk-3.0-bin
и используйте интерпретатор JavaScript WebCit (jsc
) в качестве обычного интерпретатора из командной строки. И это без необходимости иметь доступ к Mac. На многих платформах (например, x86 и x86_64) этот интерпретатор поставляется с JIT-компилятором.
Итак, почти без компиляции у вас будет три мощных движка JavaScript в вашем распоряжении.
Добавление
После того, как все будет установлено, вы можете просто создавать файлы с помощью строки #!/usr/bin/js
shebang, и все будет работать:
$ cat foo.js
#!/usr/bin/js
console.log("Hello, world!");
$ ls -lAF /usr/bin/js /etc/alternatives/js /usr/bin/nodejs
lrwxrwxrwx 1 root root 15 Jul 16 04:26 /etc/alternatives/js -> /usr/bin/nodejs*
lrwxrwxrwx 1 root root 20 Jul 16 04:26 /usr/bin/js -> /etc/alternatives/js*
-rwxr-xr-x 1 root root 1422004 Apr 28 20:31 /usr/bin/nodejs*
$ chmod a+x foo.js
$ ./foo.js
Hello, world!
$ js ./foo.js
Hello, world!
$