Sans connaître Python , ca paraît logique. input() doit retourner une chaîne de caractères, pour l'exécuter il faut passer par exec(). Mais quel intérêt puisque dans ton shell tu peux directement tapper des commandes? D'ailleurs le shell doit être - en gros - une boucle avec un exec(input(...)).