COMANDO DE EJECUCIÓN
RUNCOM es un procesador de comandos (scripts) macro de CTSS.
Historia
Louis Pouzin creó RUNCOM para CTSS alrededor de 1963. En 1965 publicó un artículo que describía un diseño para el shell Multics que incluía una breve descripción de RUNCOM seguida de un segundo artículo que publicó cinco días después que describía un diseño para RUNCOM que añadía comandos para flujo de control, ramificación condicional y bucles.
En el contexto de los sistemas tipo Unix, el término rc significa la frase "ejecutar comandos". Se utiliza para cualquier archivo que contenga información de inicio para un comando.
De Brian Kernighan y Dennis Ritchie:
Había una instalación que ejecutaría un montón de comandos almacenados en un archivo; se llamaba runcom para "correr comandos", y el archivo comenzó a ser llamado "un runcom". rc en Unix es un fósil de ese uso.
Tom Van Vleck, un ingeniero de Multics, también ha recordado la extensión rc: "La idea de que el shell de procesamiento de comandos fuera un programa esclavo común surgió del diseño de Multics y de un programa predecesor en CTSS de Louis Pouzin llamado RUNCOM, la fuente del sufijo ".rc" en algunos archivos de configuración de Unix".
Éste es también el origen del nombre del shell rc del Plan 9 de Bell Labs creado por Tom Duff. Se llama "rc" porque la función principal de un shell es "ejecutar comandos".
Aunque no es históricamente preciso, rc también puede expandirse como "control de ejecución", porque un archivo rc controla cómo se ejecuta un programa. Por ejemplo, el editor Vim busca y lee el contenido del archivo .vimrc para determinar su configuración inicial. En El arte de la programación Unix, Eric S. Raymond se refiere constantemente a los archivos rc como archivos "control de ejecución".
Usage
Antecedentes
RUNCOM no es un shell en el sentido del shell de UNIX. Cuando un usuario escribe comandos en CTSS, estos van al supervisor (kernel), no a un programa tipo shell de UNIX. Los usuarios no pueden escribir comandos en RUNCOM, éste procesa archivos de disco. Los archivos CTSS tienen un nombre y un segundo nombre separados por espacios, por ejemplo, FOO BCD.
Descripción de RUNCOM
Las cadenas de comandos RUNCOM, también conocidas como macrocomandos (ambos términos significan secuencias de comandos), son archivos con un segundo nombre, RUNCOM o BCD, que contienen cero o más líneas. Las líneas de la secuencia de comandos son líneas en blanco, comentarios, comandos normales (del tipo que se pueden introducir en la línea de comandos del supervisor) o el pseudocomando (comando integrado únicamente en RUNCOM) CHAIN.
Los comentarios comienzan con $
o *
como primer carácter de la línea. Los comentarios que utilizan $
se imprimen (incluido el $
) cuando se ejecuta RUNCOM, mientras que los que tienen *
no se imprimen en absoluto. La sustitución de parámetros no se produce en los comentarios.
Cuando un usuario invoca RUNCOM, los argumentos (parámetros) deben comenzar primero con el nombre del archivo que contiene el script. Si un usuario invoca RUNCOM sin argumentos, imprime algunas instrucciones sobre cómo usarlo y se detiene, devolviendo al usuario a la línea de comandos del supervisor (del sistema). Los argumentos restantes, si los hay, son nombres de comandos, valores que se usarán como argumentos en el script o las cadenas (NIL) o (END) que incluyen los paréntesis.
En el script, CHAIN da nombres a los argumentos que se usaron en la línea de comandos cuando se llamó a RUNCOM, por ejemplo, si se coloca CHAIN LALA FAFA en el script y se invoca RUNCOM XYZZY 3, se sustituirá LALA en el script por un 3 cuando se use en cualquier línea que venga después de CHAIN, mientras que FAFA seguirá siendo FAFA, ya que se invocó RUNCOM sin especificar nada para ello.
Si un argumento de RUNCOM es (NIL), un parámetro posicional indicado como argumento de CHAIN en el script se expandirá a nada, por ejemplo, CHAIN ALPHA BETA GAMMA combinado con RUNCOM A (NIL) B hará que ALPHA se sustituya por A y GAMMA por B, mientras que BETA se eliminará de cualquier comando que siga a CHAIN en el script.
Si un argumento RUNCOM es (END), el argumento CHAIN
correspondiente se tratará como (NIL) y todos los argumentos subsiguientes también se tratarán como (NIL).
Cualquier parámetro de CHAIN
puede usarse como nombre de comando en el script, es decir, puede aparecer antes de cualquier argumento. Un ejemplo sería RUNCOM SCRIPT LISTF
combinado con CHAIN CMD
seguido de CMD al comienzo de una línea siguiente. CMD se sustituirá en LISTF
, que listará los archivos en el directorio (como el comando ls
de Unix).
Una vez que se han completado las sustituciones, RUNCOM envía los comandos a la subrutina de la biblioteca SCHAIN, que también está disponible para otros programas.
Véase también
- Archivo de configuración
Referencias
- ^ a b Grisman, P.A., ed. (1969). The Compatible Time-Sharing System - Guía de un programador, 2nd Ed. Boston: The MIT Press. p. 525.
- ^ Pouzin, Louis (25 de noviembre de 2000). "El Origen de la Shell". Multicians. Retrieved 31 de julio 2017.
- ^ Pouzin, Louis (2 de abril de 1965). The SHELL: A Global Tool for Calling and Chaining Procedures in the System (PDF) (Informe). Massachusetts Project Institute of Technology Project MAC. MDN-4. Retrieved 9 de abril 2022.
- ^ Pouzin, Louis (7 de abril de 1965). RUNCOM - Procesador de Macro-Procedimiento para el sistema 636 (PDF) (Informe). Massachusetts Project Institute of Technology Project MAC. MDN-4. Retrieved 9 de abril 2022.
- ^ "En Unix, ¿qué significan algunos comandos de nombre oscuro?". Base de conocimientos. Indiana University. Retrieved 2009-04-20.
- ^ "Unix y Multics". Retrieved 2009-04-20.