Je suis en train d'essayer d'écrire un petit shell. Comment puis-je distinguer si un argument d'entrée est une commande interne (dans ce cas, je ferai un fork et l'exécuterai)?
PS. Je travaille sur Ubuntu 18.04 LTS.
Réponse
Trop de publicités?Eh bien, si vous écrivez votre propre shell, alors techniquement, c'est à votre implémentation de décider ce qui est ou n'est pas une commande intégrée.
Pour les commandes intégrées
Dans bash, ksh, etc., vous pouvez utiliser compgen -b pour générer une liste des commandes intégrées dans le shell correspondant.
-A action
...
builtin
Noms des commandes intégrées au shell. Peut également être spécifié en tant que -b.
Pour les commandes non intégrées
Pour trouver les commandes non intégrées, recherchez dans le chemin d'accès, ou consultez le FHS et recherchez par exemple dans /bin /sbin /usr/bin /usr/sbin.