Основной ответ
Да, отвечая на ваш вопрос, можно использовать 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
и используйте интерпретатор JavaScriptCore ( jsc
) WebKit как обычный интерпретатор из командной строки. И это без необходимости иметь доступ к 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!
$