¿Cuál es la diferencia entre la herramienta de acceso al shell de Linux y Windows?
En algunos lenguajes de programación (lenguajes web según mi experiencia), cuando necesitas ejecutar algún comando, necesitas especificar la ruta a cmd.exe en Windows, mientras que en Linux accedes al shell de inmediato... ¿Cuál y por qué es la diferencia? ¿Qué afectan exactamente los idiomas en ambos sistemas cuando ejecutas algún tipo de os.execute()
comando?
EDITAR: Esta es una pregunta bastante teórica y no está relacionada con las prácticas de programación. Me doy cuenta de que puede que no sea fácil explicar el tema, por lo que vincular o mostrar la dirección correcta para profundizar también será suficiente.
Aquí hay uno de los ejemplos en coldfusion (que es extraño, debería decir):
<cfexecute name="C:\Windows\System32\cmd.exe" arguments="echo Hm" />
Respuesta1
Bueno, intentaré ser simple (tema amplio)
La diferencia entre Windows y Linux es clara, el núcleo no es el mismo, no iré en la dirección del historial (consulte Wikipedia si tiene curiosidad;), pero Linux tiende a preferir el script porque permite al usuario personalizar la instalación o el sistema operativo como quiera, Windows usa .exe que modifica la clave de registro para ejecutar el programa.
En cuanto a por qué necesita escribir la ruta completa para ejecutar Windows exe, es bastante simple (no entraré en una explicación profunda y aburrida), Windows realmente no usa la variable global (explicación fácil: la clave de registro realmente no necesita esto para operar el exe), mientras que a Linux le encantan las variables globales, de hecho, puede agregar fácilmente variables globales en Linux que apunten a su script.
Entonces, cuando desee ejecutar un script de Linux, escriba cmd (apuntando a la variable global que contiene la ruta) y luego se ejecutará la magia. Para Windons, usted es la variable global, por lo que debe definir la ruta al archivo ejecutable que se ejecutará. Puede crear su propia variable global en Windows y usarla como Linux si lo desea, pero personalmente no me gusta hacerlo.
Espero que entiendas un poco mejor el principio.
Respuesta2
Son plataformas completamente diferentes y la mayoría de los comandos ejecutados a través de sus respectivos shells serían incompatibles, con la excepción deCygwinen Windows, que utiliza los mismos comandos que un shell de Linux.
Como regla general, intente evitar el uso de llamadas específicas del sistema operativo siempre que sea posible.
Respuesta3
Desde dentro de Python puedo decir:
>>> rc = os.system('echo yes')
yes
>>>
Esto funcionará igual en Windows, Linux o cualquier variante de Unix.
Creo que el fenómeno que observaste es específico de la portabilidad del idioma en cuestión.
Y tenga en cuenta que el subconjunto de cadenas de comandos que producirían resultados idénticos es muy limitado. Windows y Unix tienen muy pocos comandos en común.