RUNCOM est un processeur de commandes macro (scripts) CTSS .
Histoire
Louis Pouzin a créé RUNCOM pour CTSS vers 1963. Il a publié un article en 1965 décrivant une conception pour le shell Multics qui comprend une brève description de RUNCOM suivi d'un deuxième article qu'il a publié cinq jours plus tard décrivant une conception pour RUNCOM qui ajoutait des commandes pour le contrôle de flux , le branchement conditionnel et les boucles.
Dans le contexte des systèmes de type Unix, le terme rc signifie « commandes d'exécution ». Il désigne tout fichier contenant les informations de démarrage d'une commande.
De Brian Kernighan et Dennis Ritchie :
Il existait un outil permettant d'exécuter une série de commandes stockées dans un fichier ; il s'appelait runcom, pour « run commands », et le fichier a fini par être appelé « un runcom ». La commande rc sous Unix est un vestige de cet usage.
Tom Van Vleck , ingénieur chez Multics , a également évoqué l'extension rc : « L'idée de faire du shell de traitement des commandes un programme esclave ordinaire est venue de la conception de Multics et d'un programme prédécesseur sur CTSS de Louis Pouzin appelé RUNCOM, la source du suffixe '.rc' sur certains fichiers de configuration Unix. »
C’est également l’origine du nom du shell Plan 9 de Bell Labs, créé par Tom Duff : le shell rc . Il est appelé « rc » car la fonction principale d’un shell est d’« exécuter des commandes ».
Bien que cette interprétation ne soit pas historiquement exacte, « rc » peut aussi se traduire par « contrôle d'exécution », car un fichier rc détermine le fonctionnement d'un programme. Par exemple, l'éditeur Vim recherche et lit le contenu du fichier .vimrc pour définir sa configuration initiale. Dans son ouvrage *The Art of Unix Programming* , Eric S. Raymond désigne systématiquement les fichiers rc comme des fichiers de « contrôle d'exécution ».
Usage
Arrière-plan
RUNCOM n'est pas un interpréteur de commandes au sens d'un interpréteur de commandes UNIX. Lorsqu'un utilisateur saisit des commandes dans CTSS, celles-ci sont exécutées par le superviseur (noyau), et non par un programme de type interpréteur de commandes UNIX. Les utilisateurs ne peuvent pas saisir de commandes directement dans RUNCOM ; ce dernier traite des fichiers disque. Les fichiers CTSS sont composés d'un nom et d'un sous-nom séparés par des espaces, par exemple FOO BCD , comme les fichiers CMS .
Description de RUNCOM
Les chaînes de commandes RUNCOM, également appelées macro-commandes (ces deux termes désignent des scripts), sont des fichiers portant le second nom RUNCOM ou BCD et contenant zéro ou plusieurs lignes. Les lignes du script peuvent être des lignes vides, des commentaires, des commandes classiques (du type de celles pouvant être saisies sur la ligne de commande du superviseur) ou la pseudo-commande CHAIN (commande intégrée à RUNCOM).
Les commentaires commencent par un caractère quelconque $ou *par un caractère quelconque. Les commentaires utilisant un caractère quelconque $sont affichés (y compris le caractère nul $) lors de l'exécution de RUNCOM, tandis que ceux utilisant un caractère quelconque *ne sont pas affichés. La substitution de paramètres n'est pas prise en charge dans les commentaires.
Lorsqu'un utilisateur exécute RUNCOM, ses arguments (paramètres) doivent commencer par le nom du fichier contenant le script. Si RUNCOM est exécuté sans argument, des instructions d'utilisation s'affichent puis l'utilisateur est renvoyé à la ligne de commande du système. Les arguments restants, le cas échéant, sont soit des noms de commandes, soit des valeurs à utiliser comme arguments dans le script, soit les chaînes de caractères (NIL) ou (END) (parenthèses comprises).
Dans le script, CHAIN attribue des noms aux arguments utilisés sur la ligne de commande lors de l'appel à RUNCOM. Par exemple, l'insertion de CHAIN dans le CHAIN LALA FAFAscript et son invocation auront pour conséquence de remplacer LALA par un 3 dans toutes les lignes suivant CHAIN, tandis que FAFA restera FAFA, car RUNCOM a été invoqué sans aucune spécification.RUNCOM XYZZY 3
Si un argument de RUNCOM est (NIL), un paramètre positionnel désigné comme argument de CHAIN dans le script sera développé en rien, par exemple combiné avec fera en sorte qu'ALPHA soit remplacé par A et GAMMA par B tandis que BETA sera supprimé de toute commande qui suit CHAIN dans le script.CHAIN ALPHA BETA GAMMARUNCOM A (NIL) B
Si un argument RUNCOM est (END), l' CHAINargument correspondant sera traité comme (NIL) et tous les arguments suivants seront également traités comme (NIL).
Tout paramètre CHAINpeut être utilisé comme nom de commande dans le script, c'est-à-dire qu'il peut précéder tout argument. Par exemple, ` cmd` RUNCOM SCRIPT LISTFsuivi CHAIN CMDde `cmd` en début de ligne. `cmd` sera substitué dans `cmd`, LISTFqui listera les fichiers du répertoire (comme la lscommande Unix `cmd`).
Une fois les substitutions terminées, RUNCOM envoie les commandes à la sous-routine de la bibliothèque SCHAIN, qui est également accessible à d'autres programmes.