Si vous répétez une seule commande courte dans le Terminal de votre Mac, un alias peut suffire. Si la tâche nécessite des arguments, plusieurs étapes, des décisions ou une utilisation en dehors de votre shell interactif, écrivez un script. Pour un cas intermédiaire — en particulier une commande qui a besoin d'arguments mais doit changer le répertoire du shell actuel — envisagez une fonction zsh. Ce guide vous aide à choisir en fonction de ce que la commande doit faire et de l'endroit où elle doit s'exécuter.
Ce que fait un alias sur macOS
Un alias est un nom court que zsh remplace par le texte d'une commande au moment de la frappe. Par exemple, si vous lancez souvent git status, vous pouvez ajouter alias gs='git status' à ~/.zshrc. Apple documente zsh comme le shell par défaut de Terminal, bien que le shell d'un Mac puisse être modifié ; vérifiez donc votre configuration si un alias se comporte différemment de ce qui est attendu. Guide de Terminal par Apple
Utilisez un alias lorsque le remplacement est essentiellement figé : une graphie plus courte, une option standard ou une commande simple que vous exécutez de manière interactive. Il est facile à modifier ou à supprimer, et il permet de visualiser l'action complète lorsque vous examinez sa définition. Dans zsh, les alias ne prennent pas d'arguments en tant que paramètres ; ce sont de simples substitutions de texte. Cela fait de l'alias une solution peu adaptée lorsque vous devez transmettre un chemin ou une autre valeur variable à l'action. Guide de l'utilisateur Zsh sur les alias
Les alias sont également liés à l'analyse syntaxique et au démarrage du shell. Une définition chargée depuis ~/.zshrc est utile dans une session interactive de Terminal, mais vous ne devez pas supposer qu'un autre programme, un shell non interactif ou un script lira ce fichier et reconnaîtra l'alias. Si la commande doit être appelée de manière fiable depuis différents contextes, utilisez un script ou une autre interface de commande explicite.
Quand un script est la meilleure solution
Choisissez un script lorsque la tâche répétée est une petite procédure plutôt qu'une commande fixe. Parmi les signes révélateurs, citons : plusieurs étapes, des arguments, des vérifications, des branchements conditionnels, une gestion explicite des succès ou des échecs, ou la nécessité d'invoquer la commande par son chemin ou depuis un autre outil. Apple décrit les scripts shell comme un moyen de combiner des outils en ligne de commande, de gérer des arguments et de prendre des décisions en fonction des codes de retour. Les scripts shell présentent également des différences de dialectes : choisissez et documentez l'interpréteur plutôt que de supposer que chaque shell lit la même syntaxe. Guide d'initiation aux scripts shell d'Apple
Par exemple, si une routine prend un dossier de projet en entrée, vérifie qu'il existe, puis y exécute la même séquence, un script peut rendre cette entrée explicite et organiser les étapes de manière lisible. Avant d'automatiser des modifications telles que la suppression ou l'écrasement de fichiers, ajoutez des vérifications et définissez clairement le comportement en cas d'échec. Un script shell s'exécute comme une commande dans son propre contexte d'exécution ; changer de répertoire à l'intérieur de celui-ci ne modifie pas le répertoire du shell Terminal appelant. Zsh documente l'exécution des commandes de script séparément de l'exécution des fonctions dans le shell appelant. Exécution des commandes Zsh
Un script n'est pas automatiquement plus sûr ou plus portable. C'est un fichier supplémentaire à maintenir, et son comportement dépend de son interpréteur, des commandes disponibles sur le Mac, des permissions et des hypothèses concernant les chemins ou les entrées. Le guide d'Apple avertit expressément que les dialectes shell et les différences d'utilitaires selon les plateformes peuvent entraîner des échecs. Limitez la portée de vos scripts, placez les expansions de variables entre guillemets lorsque cela est approprié et testez-les avec des exemples de données sans risque avant de les appliquer à des données importantes.
Utiliser une fonction zsh pour les cas intermédiaires
Une fonction est souvent le meilleur choix si vous avez besoin d'une logique réutilisable et d'arguments dans votre shell Terminal actuel, mais sans avoir besoin d'un fichier autonome. Par exemple, une fonction peut accepter un répertoire comme argument, le valider, puis exécuter cd vers celui-ci ; comme les fonctions zsh s'exécutent dans le processus du shell de l'appelant, ce changement de répertoire persiste dans la session interactive. Zsh documente que les fonctions reçoivent des arguments et s'exécutent dans le même processus que l'appelant. Fonctions Zsh
Définissez une fonction dans ~/.zshrc lorsque vous souhaitez qu'elle soit disponible dans vos sessions interactives de Terminal. Préférez un script lorsque l'action doit fonctionner comme une commande distincte, être appelée par des outils ou d'autres scripts, ou être plus facile à partager sous forme de fichier. Préférez un alias lorsque vous souhaitez simplement un nom facile à mémoriser pour une seule ligne de commande fixe.
Un test rapide pour décider
Demandez-vous ce qui changerait si vous deviez réexécuter la tâche. Si rien ne change à part le nom de la commande, utilisez un alias. Si une valeur change à chaque fois, comme un dossier ou un nom de fichier, utilisez une fonction ou un script qui l'accepte. Si la tâche comporte plusieurs étapes ou des décisions logiques, utilisez un script. Si elle doit modifier la session Terminal en cours, comme son répertoire de travail, utilisez une fonction.
Vérifiez ensuite où vous avez besoin de cette commande. Dans Terminal uniquement ? Un alias ou une fonction dans ~/.zshrc peut convenir. Une commande invocable séparément ? Utilisez un script, avec un interpréteur adapté et des autorisations choisies avec soin. Partagée avec un autre Mac ? Documentez les prérequis et les outils nécessaires ; un script shell n'est pas automatiquement portable simplement parce qu'il s'exécute dans Terminal.
La ligne de démarcation utile réside dans l'interface de la tâche : les alias renomment un texte de commande fixe, les fonctions ajoutent un comportement réutilisable à l'intérieur du shell actuel, et les scripts encapsulent une procédure sous forme de commande distincte. Commencez par l'option la plus simple qui répond à ces besoins, et passez à une fonction ou un script lorsque les arguments, la logique ou le contexte d'exécution rendent l'alias inadapté.
Sources
Modifier le shell par défaut dans Terminal sur Mac — Assistance Apple
Shell Scripting Primer: Introduction — Apple Developer
Command Execution — Zsh
Functions — Zsh