2010-08-06 19 views
13

¿Hay alguna manera de ejecutar comandos de Linux desde JavaScript que utiliza un intérprete independiente (algo similar con SpiderMonkey, JavaScript shell)?Intérprete de Javascript para Linux

+0

¿Por qué no lo escribes en bash? – oneat

+0

Sí, esa fue la primera opción, pero alguien me sugirió que usara javascript, así que es por eso que me pregunto si es posible o no. :) – Madalina

Respuesta

0

Rhino ofrece un intérprete de JavaScript escrito en Java que puede ser llamado desde la línea de comandos. Si necesita un emulador de navegador, intente Envjs.

Rhino no puede ejecutar comandos pero se puede utilizar org.mozilla.javascript.ScriptableObject.defineFunctionProperties() para definir una nueva función que requiere un cierto código de Java en el que se puede crear un nuevo proceso utilizando ProcessBuilder

[EDIT] Desde JavaScript es un lenguaje interpretado, se necesita un intérprete Para que se ejecute el intérprete, necesita otro idioma. Linux no viene con un built-in (como lo hace para scripts de shell o similares).

Si necesita secuencias de comandos, utilice Bash o (para los scripts más complejos) Python.

+0

No necesito un emulador de navegador. Todo lo que quiero hacer es ejecutar un archivo javascript (usando un intérprete) que ejecute algunos comandos de Linux. ¿Es posible hacer esto? Y también preferiría no depender de Java, porque mi archivo javascript debería hacer algunas instalaciones en mi máquina Linux. No sé si mis preguntas son claras, pero me sugirieron usar javascript para hacer esto, y realmente no sé cómo hacerlo. – Madalina

+0

Como JavaScript es un lenguaje interpretado, necesita un intérprete. Para que se ejecute el intérprete, necesita otro idioma. –

+1

* "Para que se ejecute el intérprete, necesita otro idioma." * No, no necesita otro * idioma *. Solo necesitas un motor de JavaScript. V8 (motor de JavaScript de Google), por ejemplo, es un ejecutable compilado. No necesita otro tiempo de ejecución de idioma (Python, JVM, Perl, lo que sea) para ejecutarlo. –

2

Es posible definir las funciones JS que llamarán a sus funciones C/C++ que podrían usar la llamada system(), ejecutando algunos comandos de linux.

por lo que tendría

system('rpm -i myapp.rpm'); 
system('rpm -i myapp2.rpm'); 

o tal vez

install('myapp.rpm'); 
install('myapp2.rpm'); 
+0

Sí, necesito ejecutar algo como system ('rpm -i myapp.rpm'), pero directamente desde Javascript, porque no puedo depender de otros lenguajes, como C++ o Java. – Madalina

6

Puede usar NodeJS. Tiene un módulo child_process que puede ejecutar comandos arbitrarios. P.EJ. child_process.spawn()

Una vez finalizada la secuencia de comandos se ejecuta como esto:

node myscript.js 
8

jslibs es un intérprete independiente JavaScript que se ejecuta en linux32/64 y Windows.
Puede ejecutar fácilmente comandos de Linux a través de las bibliotecas proporcionadas por jslibs.