¿Dónde está el script para el comando alias en Linux?

¿Dónde está el script para el comando alias en Linux?

Quiero agregar un argumento al script de alias de bash para poder ejecutarlo

alias -p l='ls -l'

y se agregaría a mi .zshrc de forma permanente. Pero no puedo localizar el script de shell para alias.

Lo intenté whereis alias, pero sin suerte. Incluso man aliasmuestra que el alias no tiene entrada.

Miré /usr/bin, /usr/share/local/binpero sin suerte. ¿Alguien puede señalar la ubicación?

EDITAR: También intenté buscar en todas las rutas posiblesls $(echo $PATH| tr ':' '\n') | grep alias

Respuesta1

aliases un comando incorporado, por lo que no aparece como script en ningún archivo ni como una función. El typecomando mostrará esto:

$ type alias
alias is a shell builtin 

Pero aún puedes anularlo. Una función con el mismo nombre enmascarará la función incorporada, a menos que se llame explícitamente con la builtinfunción incorporada.

Entonces, algo como esto debería funcionar:

alias() {
    if [ "$1" = "-p" ]; then
        echo "-p was given";
        shift;
    fi;
    builtin alias "$@";
}

Si desea imprimir la misma asignación de alias en un archivo, debe tener cuidado de citarlo correctamente, para que se pueda utilizar como entrada al shell.

Algo como esto podría funcionar (agregado justo después de shiften la función), pero pruébelo:printf "alias %q\n" "$@" >> ~/my.alias.file

En cuanto al problema de Bash vs. Zsh, creo que lo anterior funciona con ambos, pero no soy un experto en Zsh.


Por cierto, es posible que también desees tener en cuenta que Bash aliasya tiene una -popción help aliasque dice:

  Options:
    -p        print all defined aliases in a reusable format

No sé si sirve de algo, ya que el comportamiento predeterminado de aliassin argumentos también es imprimir todos los alias en un formato reutilizable.

Respuesta2

Lo más probable es que su aliascomando sea un shell integrado, no un script. Puedes verificar esto usando el typecomando:

user@host:~$ type alias
alias is a shell builtin

Para obtener documentación sobre la aliasfunción incorporada, consulte la bashpágina de manual:

man bash

Para hacer que un alias sea persistente, normalmente agregaría el comando a uno de sus archivos de perfil de Bash; probablemente su ~/.bashrcarchivo, por ejemplo:

user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc

Respuesta3

Por lo que puedo decir, zshno admite alias persistentes.

Si te gustan los alias persistentes, te recomiendo que consulteshttp://schilytools.sourceforge.net/man/man1/bosh.1.htmlpara una implementación de alias con disponibilidad persistente.

Para otros shells, los alias solo se pueden escribir como comandos de alias dentro del .*shrcarchivo relacionado.

Respuesta4

Estoy trabajando principalmente con bash y tengo mis alias en .bashrc.

Está ubicado en mi directorio de inicio en /home/myuser/.bashrc

información relacionada