Onde está o script para o comando alias no Linux?

Onde está o script para o comando alias no Linux?

Quero adicionar um argumento ao script bash alias para que eu possa executar

alias -p l='ls -l'

e seria adicionado ao meu .zshrc permanentemente. Mas não consigo localizar o script de shell do alias.

Eu tentei whereis alias, mas sem sorte. até man aliasmostra que o alias não tem entrada.

Eu olhei, /usr/bin, /usr/share/local/binmas sem sorte. Alguém pode indicar a localização?

EDIT: Eu também tentei procurar todos os caminhos possíveis porls $(echo $PATH| tr ':' '\n') | grep alias

Responder1

aliasé um comando interno, portanto não aparece como script em nenhum arquivo ou como uma função. O typecomando mostrará isso:

$ type alias
alias is a shell builtin 

Mas você ainda pode substituí-lo. Uma função com o mesmo nome irá mascarar o builtin, a menos que seja explicitamente chamada com o builtinbuiltin.

Então, algo assim deve funcionar:

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

Se você deseja imprimir a mesma atribuição de alias para um arquivo, você precisa ter cuidado para colocá-lo entre aspas corretamente, para que possa ser usado como entrada no shell.

Algo assim pode servir (adicionado logo após na shiftfunção), mas teste:printf "alias %q\n" "$@" >> ~/my.alias.file

Quanto à questão Bash vs. Zsh, acho que o acima funciona com ambos, mas não sou um especialista em Zsh.


Aliás, você também pode observar que o Bash aliasjá tem uma -popção help aliasque diz:

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

Não sei se adianta, já que o comportamento padrão de aliassem argumentos também é imprimir todos os aliases em um formato reutilizável.

Responder2

Seu aliascomando provavelmente é um shell integrado, não um script. Você pode verificar isso usando o typecomando:

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

Para obter a documentação sobre o aliasbuiltin, você deve consultar a bashpágina de manual:

man bash

Para tornar um alias persistente, você normalmente adicionaria o comando a um dos seus arquivos de perfil Bash - provavelmente o seu ~/.bashrcarquivo, por exemplo:

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

Responder3

Pelo que sei, zshnão oferece suporte a aliases persistentes.

Se você gosta de aliases persistentes, recomendo que você verifiquehttp://schilytools.sourceforge.net/man/man1/bosh.1.htmlpara uma implementação de aliases com disponibilidade persistente.

Para outros shells, os aliases só podem ser escritos como comandos de alias dentro do .*shrcarquivo relacionado.

Responder4

Estou trabalhando principalmente com o bash e tenho meus aliases em .bashrc.

Ele está localizado no meu diretório inicial em /home/myuser/.bashrc

informação relacionada