Si repites un comando corto en Terminal en tu Mac, un alias puede ser suficiente. Si la tarea necesita argumentos, varios pasos, decisiones o usarse fuera de tu shell interactivo, escribe un script. Para un caso intermedio —especialmente un comando que necesita argumentos pero debe cambiar el directorio del shell actual—, considera una función de zsh. Esta guía te ayuda a elegir en función de lo que el comando debe hacer y de dónde necesitas que funcione.
Qué hace un alias en macOS
Un alias es un nombre corto que zsh expande en texto de comando a medida que escribes. Por ejemplo, si ejecutas a menudo git status, podrías añadir alias gs='git status' a ~/.zshrc. Apple documenta zsh como el shell predeterminado de Terminal, aunque el shell de un Mac se puede cambiar, así que comprueba tu configuración si un alias se comporta de forma distinta a la esperada. Guía de Terminal de Apple
Usa un alias cuando el reemplazo sea esencialmente fijo: una forma abreviada de escribirlo, una opción estándar o un comando simple que ejecutas de manera interactiva. Es fácil de editar o eliminar, y mantiene la acción completa visible cuando inspeccionas la definición. En zsh, los alias no aceptan argumentos como parámetros; son sustituciones de texto. Eso hace que un alias no sea una buena opción cuando necesitas pasar una ruta u otro valor variable a la acción. Guía del usuario de Zsh sobre alias
Los alias también están vinculados al análisis sintáctico y al inicio del shell. Una definición cargada desde ~/.zshrc es útil en una sesión interactiva de Terminal, pero no debes asumir que otro programa, un shell no interactivo o un script leerán ese archivo y conocerán el alias. Si el comando necesita invocarse de manera confiable desde diferentes contextos, utiliza un script u otra interfaz de comando explícita.
Cuándo es mejor un script
Elige un script cuando la tarea repetida sea un pequeño procedimiento en lugar de un comando fijo. Algunos indicios incluyen múltiples pasos, argumentos, comprobaciones, ramificaciones condicionales, un comportamiento claro de éxito o fracaso, o la necesidad de invocarlo mediante una ruta o desde otra herramienta. Apple describe los scripts de shell como una forma de combinar herramientas de línea de comandos, gestionar argumentos y tomar decisiones basadas en códigos de resultado. Los scripts de shell también presentan diferencias de dialecto, así que elige y documenta el intérprete en lugar de asumir que todos los shells leen la misma sintaxis. Manual básico de secuencias de comandos de shell de Apple
Por ejemplo, si una rutina toma una carpeta de proyecto como entrada, comprueba que existe y luego ejecuta la misma secuencia allí, un script puede hacer que esa entrada sea explícita y ordenar los pasos de forma legible. Antes de automatizar cambios como eliminar o sobrescribir archivos, añade comprobaciones y define con claridad el comportamiento en caso de error. Un script de shell se ejecuta como un comando en su propio contexto de ejecución; no se debe confiar en que cambiar de directorio dentro de él cambiará el directorio del shell de Terminal que lo invoca. Zsh documenta la ejecución de comandos de scripts por separado de la ejecución de funciones en el shell llamador. Ejecución de comandos en Zsh
Un script no es automáticamente más seguro ni más portable. Es un archivo más que mantener, y su comportamiento depende de su intérprete, de los comandos disponibles en el Mac, de los permisos y de las suposiciones sobre rutas o entradas. El manual básico de Apple advierte específicamente que las diferencias entre dialectos de shell y utilidades de la plataforma pueden provocar fallos. Mantén los scripts acotados, entrecomilla las expansiones de variables donde sea apropiado y pruébalos con entradas de muestra seguras antes de usarlos con datos valiosos.
Usa una función de zsh para el caso intermedio
Una función suele ser la mejor opción si necesitas lógica reutilizable y argumentos en tu shell de Terminal actual, pero no necesitas un archivo independiente. Por ejemplo, una función puede aceptar un argumento de directorio, validarlo y luego hacer cd hacia él; dado que las funciones de zsh se ejecutan en el proceso del shell llamador, ese cambio de directorio persiste en la sesión interactiva. Zsh documenta que las funciones reciben argumentos y se ejecutan en el mismo proceso que el llamador. Funciones de Zsh
Define una función en ~/.zshrc cuando quieras que esté disponible en sesiones interactivas de Terminal. Prefiere un script cuando la acción deba funcionar como un comando independiente, ser llamada por herramientas u otros scripts, o ser más fácil de compartir como un archivo. Prefiere un alias cuando todo lo que buscas es un nombre fácil de recordar para una única línea de comando fija.
Una prueba rápida para decidir
Pregúntate qué cambiaría si volvieras a ejecutar la tarea. Si no cambia nada excepto el nombre del comando, usa un alias. Si cambia un valor cada vez, como una carpeta o un nombre de archivo, usa una función o un script que lo acepte. Si la tarea tiene pasos o decisiones, usa un script. Si debe cambiar la sesión actual de Terminal, como su directorio de trabajo, usa una función.
Luego comprueba dónde necesitas el comando. ¿Solo en Terminal? Un alias o una función en ~/.zshrc puede ser adecuado. ¿Un comando invocable por separado? Usa un script, con un intérprete adecuado y permisos deliberados. ¿Compartido con otro Mac? Documenta las suposiciones y las herramientas necesarias; un script de shell no es automáticamente portable solo porque se ejecute en Terminal.
La línea divisoria útil es la interfaz de la tarea: los alias cambian el nombre del texto de un comando fijo, las funciones añaden un comportamiento reutilizable dentro del shell actual y los scripts empaquetan un procedimiento como un comando independiente. Comienza con la opción más simple que satisfaga esas necesidades y pasa a una función o script cuando los argumentos, la lógica o el lugar donde debe ejecutarse el comando hagan que un alias resulte inadecuado.
Fuentes
Cambiar la shell por omisión en Terminal en el Mac — Soporte técnico de Apple
Shell Scripting Primer: Introduction — Apple Developer
Command Execution — Zsh
Functions — Zsh