RUNCOM es un procesador de comandos (script) macro CTSS . [1]
Louis Pouzin creó RUNCOM para CTSS alrededor de 1963. [2] Publicó un artículo en 1965 que describe un diseño para el shell Multics que incluye una breve descripción de RUNCOM [3] seguido de un segundo artículo que publicó cinco días después que describe un diseño para RUNCOM que agregó comandos para flujo de control , ramificación condicional y bucle. [4]
En el contexto de los sistemas tipo Unix, el término rc hace referencia a la frase " ejecutar comandos ". Se utiliza para cualquier archivo que contenga información de inicio de un comando.
De Brian Kernighan y Dennis Ritchie : [5]
Había una utilidad que ejecutaba un conjunto de comandos almacenados en un archivo; se llamaba runcom, por "ejecutar comandos", y el archivo comenzó a llamarse "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 ordinario 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". [6]
É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 The Art of Unix Programming , Eric S. Raymond se refiere constantemente a los archivos rc como archivos de "control de ejecución".
Fondo
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, p. ej. 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 utilizan *
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 con el primer 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 (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 comando cuando se llamó a RUNCOM, por ejemplo, poner CHAIN LALA FAFA en el script e invocar RUNCOM XYZZY 3 hará que LALA en el script se sustituya por un 3 cuando se usa 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 un 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 CHAIN
argumento correspondiente se tratará como (NIL) y todos los argumentos subsiguientes también se tratarán como (NIL).
Cualquier parámetro CHAIN
puede usarse como nombre de comando en el script, es decir, puede ir primero antes de cualquier argumento. Un ejemplo sería RUNCOM SCRIPT LISTF
combinar con CHAIN CMD
seguido de CMD al comienzo de una línea siguiente. CMD se sustituirá en LISTF
lo que enumerará los archivos en el directorio (como el ls
comando Unix).
Una vez completadas las sustituciones, RUNCOM envía los comandos a la subrutina de la biblioteca SCHAIN, que también está disponible para otros programas. [1]