Salut à tous! Voici un petit petit billet pour vous présenter mon dernier projet : créer un shell pour FiXos! Un shell est un programme en ligne de commandes exécuté sur un terminal qui prend des commandes et les opère. C’est le programme qui lie le système à l’utilisateur; il va notamment décomposer l’ordre demandé, traiter cet ordre ou exécuter les programmes demandés. Les shells les plus connus sont probablement sh et bash (ce dernier est le plus répandu, il est même par défaut sur Mac) même si j’ai une préférence pour zsh. FiXos, n’étant qu’un kernel, n’offre aucune interactivité avec l’utilisateur, il convient à un shell d’offrir à l’utilisateur les fonctionnalités qu’il désire. c’est pour ça que j’ai commencé à programmer FXSH. C’est avant tout pour pouvoir interagir avec le système dès une période assez tôt dans le développement de FiXos et pouvoir, par exemple, exécuter des mini-programmes de test ou se promener dans la mémoire de la calto pour en voir ce qu’il y a dedans! :p

Finalemenet, écrire des programmes sytème est très enrichissant. On apprend pas mal de choses des deux côtés de la libc et unistd, notamment quand ceux-ci n’ont pas la fonctionnalité qu’ils devraient avoir. J’ai ainsi pu avancer la libc en programmant les fonctions getenvet setenv parce qu’elles manquaient à l’appel. Je commence à avoir une vision un peu plus précise de l’énorme projet que Kristaba traîne derrière lui et ça me permet de l’aider davantage dans ses travaux.

Donc, on se retrouve avec une version minimaliste d’un shell. On n’a pas les scripts, ni les variables mais on a déjà le nécessaire, c’est-a-dire:

  • cd et ls (il manque bien cd .. à l’appel mais c’est prévu dans une nouvelle version de cd, récursive cette fois)

  • Gestion des variables d’environnement (notamment PWD) et du dossier actuel du processus.

  • Un jôli prompt qui affiche le dossier courant.

  • Exécution de programmes et attente de leur fin.

  • Devrait bien marcher sur des *nix (ceux-ci sont un peu plus tolérants au niveau des pointeurs)

  • Vérifie quand un cd ne peut pas marcher car la destination n’existe pas ou qu’elle soit un fichier et non un dossier.

Et voici le lien pour le repo GitLab de FXSH, hébergé sur le site qui contient FiXos désormais : [Lien]. Je n’ai pas encore de licence car je ne sais pas laquelle mettre, du coup, c’est “all rights reserved” pour le moment :/. Et sur ce, je vous laisse, demain c’est Japan Expo Sud! A plus!