Resposta Principal
Sim, para responder sua pergunta, é possível usar o JavaScript como uma linguagem de script "regular" na linha de comando, sem um navegador. Como outros ainda não o mencionaram, vejo que vale a pena mencionar:
Em sistemas baseados no Debian (e isso inclui Ubuntu, Linux Mint e aptosid / sidux, pelo menos), além das opções de instalação do Rhino e outras já mencionadas, você tem outras opções:
Instale o libmozjs-24-bin
pacote, que fornecerá o mecanismo Spidermonkey da Mozilla na linha de comando como um simples js24
, que também pode ser usado como intérprete interativo. (O 24
nome indica que corresponde à versão 24 do Firefox).
Instale o libv8-dev
pacote, que fornecerá o mecanismo V8 do Google. Possui, como um de seus exemplos, o arquivo /usr/share/doc/libv8-dev/examples/shell.cc.gz
que você pode descompactar e compilar com muita simplicidade (por exemplo, g++ -Os shell.cc -o shell -lv8
).
Instale o pacote nodejs
e ele estará disponível como executável nodejs
e como alternativa (no sentido Debian) para fornecer o js
executável. A compilação JIT é fornecida como cortesia da V8.
Instale o pacote libjavascriptcoregtk-3.0-bin
e use o interpretador JavaScriptCore do WebKit ( jsc
) como intérprete regular na linha de comando. E isso sem precisar ter acesso a um Mac. Em muitas plataformas (por exemplo, x86 e x86_64), esse intérprete virá com um compilador JIT.
Portanto, com quase nenhuma compilação, você terá três dos mecanismos JavaScript pesados à sua disposição.
Termo aditivo
Depois de instalar as coisas, você pode simplesmente criar arquivos com a #!/usr/bin/js
linha shebang e tudo funcionará:
$ 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!
$