
L'interface d' un système d'exploitation est un programme informatique qui offre un accès relativement étendu et direct au système sur lequel il s'exécute. Le terme « interface » fait référence à sa nature de couche relativement mince autour du système d'exploitation.
La plupart des interpréteurs de commandes sont des programmes en ligne de commande (CLI). Certaines interfaces graphiques (GUI) incluent également des interpréteurs de commandes.
Aperçu
Les systèmes d'exploitation fournissent divers services à leurs utilisateurs, notamment la gestion des fichiers , la gestion des processus (exécution et arrêt des applications ), le traitement par lots , ainsi que la surveillance et la configuration du système d'exploitation.
La plupart des interpréteurs de commandes des systèmes d'exploitation ne constituent pas des interfaces directes avec le noyau sous-jacent , même s'ils communiquent avec l'utilisateur via des périphériques connectés directement à l'ordinateur. Les interpréteurs de commandes sont en réalité des applications spécialisées qui utilisent l' API du noyau de la même manière que les autres programmes. Un interpréteur de commandes gère l'interaction utilisateur - système en invitant l'utilisateur à saisir des données, en interprétant ces données, puis en traitant la sortie du système d'exploitation (à la manière d'une boucle lecture-évaluation-affichage, REPL ). Étant donné que l'interpréteur de commandes est une application à part entière, il peut être facilement remplacé par une application similaire sur la plupart des systèmes d'exploitation.
Outre les shells exécutés sur les systèmes locaux, il existe différentes manières de rendre les systèmes distants accessibles aux utilisateurs locaux ; ces approches sont généralement désignées sous les termes d’accès distant ou d’administration à distance. Initialement disponible sur les mainframes multi-utilisateurs , qui offraient des interfaces utilisateur textuelles simultanées à chaque utilisateur actif via un terminal texte connecté au mainframe par ligne série ou modem , l’accès distant s’est étendu aux systèmes de type Unix et à Microsoft Windows. Sur les systèmes de type Unix, le protocole Secure Shell (SSH) est généralement utilisé pour les shells textuels, tandis que le tunneling SSH peut être utilisé pour les interfaces graphiques ( GUI) basées sur le système X Window . Sous Microsoft Windows, le protocole RDP (Remote Desktop Protocol) permet de fournir un accès distant via interface graphique. Depuis Windows Vista , PowerShell Remote est disponible , et depuis Windows 10 (build 1809), SSH peut également être utilisé pour l’accès distant textuel via WMI, RPC et WS-Management.
La plupart des interpréteurs de commandes des systèmes d'exploitation se répartissent en deux catégories : les interpréteurs en ligne de commande et les interpréteurs graphiques. Les interpréteurs en ligne de commande offrent une interface en ligne de commande (CLI) au système d'exploitation, tandis que les interpréteurs graphiques offrent une interface utilisateur graphique (GUI). D'autres possibilités, moins courantes, incluent les interfaces vocales et diverses implémentations d'interfaces utilisateur textuelles (TUI) autres que les CLI, comme les systèmes de menus textuels. Les avantages respectifs des interpréteurs en ligne de commande et des interpréteurs graphiques font souvent l'objet de débats. De nombreux utilisateurs d'ordinateurs utilisent les deux en fonction de la tâche à accomplir.
Histoire
Les premiers systèmes interactifs offraient un interpréteur de commandes simple intégré au moniteur résident . Cet interpréteur pouvait porter différents noms, comme COMCONsur les systèmes DEC TOPS-10 . Il exécutait des commandes prédéfinies, dont l'une permettait de lancer un programme utilisateur. Les commandes courantes permettaient de se connecter et de se déconnecter, d'allouer, de libérer et de manipuler des périphériques et des fichiers, et d'obtenir diverses informations sur le système ou un processus utilisateur.
L'objectif d'une telle procédure est de créer un milieu d'échange permettant d'activer n'importe quelle procédure, comme si elle était appelée depuis l'intérieur d'un autre programme . Par souci de simplification, nous désignerons cette procédure par le terme « SHELL ».
En 1964, pour le système d'exploitation Multics , Louis Pouzin a conçu l'idée d'« utiliser des commandes à la manière d'un langage de programmation » et a forgé le terme « shell » pour la décrire. Dans un document de 1965, le shell est défini comme « une procédure commune appelée automatiquement par le superviseur lorsqu'un utilisateur saisit un message sur sa console, à un moment où aucun autre processus n'est en cours d'exécution sous le contrôle de cette console. Cette procédure sert d'interface entre les messages de la console et les sous-programmes [du superviseur] ». Ce système a été implémenté pour la première fois par Glenda Schroeder et un collaborateur anonyme de General Electric .
Multics a également introduit la fonction active , un concept clé dans certains shells ultérieurs. Celle-ci est définie comme
une chaîne de caractères... qui est remplacée par une valeur de retour de type chaîne de caractères avant l'exécution de la ligne de commande la contenant. Les fonctions actives sont souvent utilisées... pour implémenter des macros du langage de commande.
En 1971, Ken Thompson a développé le shell Thompson dans la première version d'Unix. Bien que plus simple que le shell Multics, il contenait certaines fonctionnalités innovantes, qui ont été reprises dans les shells modernes, notamment l'utilisation de < et > pour la redirection des entrées et des sorties .
L'interface graphique est apparue pour la première fois dans le système NLS de Douglas Engelbart , présenté en décembre 1968 lors de la Fall Joint Computer Conference à San Francisco, dans ce qui est resté dans les annales comme la « mère de toutes les démos » . Les collègues d'Engelbart au Stanford Research Institute ont ensuite introduit le concept au Xerox Palo Alto Research Center (PARC), où il a été intégré à l' Alto , lancé en 1973. De là, l'idée s'est répandue, notamment avec le Lilith de Niklaus Wirth en 1980 et l' Apple Lisa en 1983, avant de devenir omniprésente.