por - ejecutar powershell desde cmd como administrador
¿Terminal o consola o shell o símbolo del sistema? (1)
Sí, hay mucha confusión sobre estos términos. Le daré una puñalada, pero con la condición de que esto sea realmente semántico y los términos se usen indistintamente en el habla cotidiana:
"Shell" es el término utilizado para cualquier programa que ejecuta otros. Se envuelve alrededor de otro programa, de ahí su nombre. Entonces, por ejemplo, el Explorador de Windows es un shell, aunque muy pocas personas lo llamen uno. En todos los lenguajes y plataformas que he usado, cualquier programa puede ser un shell.
EDIT: no he definido un "terminal". Recibe su nombre por ser el punto final de la comunicación con el usuario. Específicamente fue el dispositivo de máquina de escribir utilizado para la comunicación del usuario final. Hoy en día es bastante más general, y puede significar un pseudo-terminal (pts en Linux ps -ef
), que es una sesión basada en caracteres gestionada por una GUI. En Windows esto se llamaría una "ventana de consola".
"Consola" significa algo específico, pero diferente, en Windows y UNIX. Originalmente, en UNIX era el tty (TeleTYpewriter, una VDU era un "teletipo de vidrio") que estaba conectado físicamente a la máquina, ni siquiera a través de un dongle (vuelvo un largo camino con UNIX). Fue el terminal el que envió y recibió mensajes de inicio y cierre, y alertas como los PANIC. Tanto los scripts de shell bash como los de Korn pueden ejecutarse como pseudo-daemons sin una consola TTY.
El término "consola" a menudo se confunde con la más precisa "entrada estándar", "salida estándar" y "error estándar" (stdin, stdout, stderr, from C). Algunas veces, se conocen como flujos y están predeterminados para ser dirigidos a un terminal en la mayoría de los sistemas. En UNIX son los primeros tres descriptores de archivos, en Windows los primeros tres manejadores de archivos, 0, 1, 2 en ambos. Un programa puede dirigirlos a cualquier sistema de archivos al que tenga acceso adecuado, pero generalmente no lo hace; a menudo los hereda de su proceso principal (no todos los sistemas operativos lo hicieron en el pasado).
En Windows, un programa de "Consola" es uno que tiene una ventana de consola, a menudo conocida incorrectamente como "caja de DOS". Entonces, cmd.exe es un programa de consola, pero también lo es perl.exe, y también lo es python.exe (pero no pythonw.exe).
Un símbolo del sistema es la invitación a escribir que se muestra mediante un intérprete de línea de comandos o CLI. Por convención en UNIX, termina con un $ para todos los usuarios excepto root, que termina con un #. csh no sigue esta convención y usa un%. En general, el aviso en un CLI de Windows termina con un>. En todos los casos estos pueden ser alterados por el usuario.
Creo que el acceso directo y el título de la ventana para cmd.exe en Windows tienen la etiqueta "Símbolo del sistema" porque le da acceso a un símbolo del sistema. Tengo un libro de Microsoft Press llamado "Línea de comandos de Windows" que dice "Se accede a la línea de comandos ... a través de la ventana de shell". Así que incluso Microsoft mezcla sus términos.
Entonces, cmd.exe es un shell y una CLI, y un programa de consola. sqlplus es un CLI pero no un shell, en Windows es un programa de consola. El Explorador de Windows es un shell pero no un CLI o un programa de consola. Bash y Korn shell son ambos shells que tienen un CLI y pueden ejecutarse desde una consola, pero no exclusivamente.
Me encuentro usando estos términos indistintamente sin saber la diferencia.
¿Cuál es la diferencia real entre todos estos términos?