Como un novato ingenuo, creé varios alias de bash destinados a aceptar argumentos, y funcionan exactamente como se esperaba. Sin embargo, traté de crear algunos alias más y estos no funcionaron según lo previsto.
Este problema me llevó aquí, donde aprendí que los alias de bash no aceptan argumentos. En su lugar, debe crear una función. Por ejemplo ver aquí o aquí .
Entonces, suponiendo que el consenso de "los alias de bash no aceptan argumentos" es correcto, ¿por qué funcionan todos estos?
alias pacss='pacman -Ss ' alias pacs='sudo pacman -S ' alias yausnc='yaourt -S --noconfirm 'Cuando digo que estos "funcionan", quiero decir que, por ejemplo, al escribir 'paquete pacs' se me solicita la contraseña, se solicita confirmación y luego se recupera e instala el paquete.
Entonces, ¿por qué funcionan estos alias? ¿Los términos que aceptan no se consideran técnicamente 'argumentos'? ¿Es una idiosincrasia de Arch (o Manjaro, que estoy usando)? ¿Un agujero en el continuo espacio-tiempo?
Cualquier aclaración será apreciada.
EDITAR: Gracias por las respuestas que explican que no requieren argumentos. No entiendo muy bien cómo mis primeros ejemplos son diferentes del siguiente intento de alias, que no funciona:
alias lping='ping 192.168.1.'Esto falla porque ping se ejecuta sin agregar el número que escribo. Mi intención era poder ingresar, por ejemplo, lping 123 y hacer que bash ejecute "ping 192.168.1.123", pero en su lugar dice "host desconocido 192.168.1".
No, los términos que "aceptan" no se llaman "argumentos".
Los alias de Bash son solo reemplazos de texto.
Es decir, cuando escribes
pacsbash reemplaza eso con
sudo pacman -Sy cuando escribes
pacs packagebash reemplaza eso con
sudo pacman -S packageEn otras palabras, los argumentos no se pasan al alias: los caracteres después del alias simplemente se agregan a lo que sea que se expanda el alias.