Respuesta principal
Sí, para responder a su pregunta, es posible usar JavaScript como un lenguaje de script "regular" desde la línea de comandos, sin un navegador. Como otros aún no lo han mencionado, veo que vale la pena mencionarlo:
En los sistemas basados en Debian (y esto incluye Ubuntu, Linux Mint y aptosid / sidux, al menos), además de las opciones de instalación de Rhino y otras ya mencionadas, tiene otras opciones:
Instale el libmozjs-24-bin
paquete, que le proporcionará el motor Spidermonkey de Mozilla en la línea de comandos como un simple js24
, que puede usarse también como un intérprete interactivo. (El 24
en el nombre significa que corresponde a la versión 24 de Firefox).
Instale el libv8-dev
paquete, que le proporcionará el motor V8 de Google. Tiene, como uno de sus ejemplos, el archivo /usr/share/doc/libv8-dev/examples/shell.cc.gz
que puede descomprimir y compilar de manera muy simple (por ejemplo, g++ -Os shell.cc -o shell -lv8
).
Instale el paquete nodejs
y estará disponible como el ejecutable nodejs
y como una alternativa (en el sentido de Debian) para proporcionar el js
ejecutable. La compilación JIT se proporciona como cortesía de V8.
Instale el paquete libjavascriptcoregtk-3.0-bin
y use el intérprete JavaScriptCore de WebKit ( jsc
) como intérprete habitual desde la línea de comandos. Y esto es sin necesidad de tener acceso a una Mac. En muchas plataformas (por ejemplo, x86 y x86_64), este intérprete vendrá con un compilador JIT.
Entonces, con casi ninguna compilación, tendrá a su disposición tres de los motores JavaScript más pesados.
Apéndice
Una vez que haya instalado las cosas, simplemente puede crear archivos con la #!/usr/bin/js
línea shebang y las cosas simplemente funcionarán:
$ 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!
$