Onde é o script para o comando alias no Linux? [duplicado]

10
    

Esta pergunta já tem uma resposta aqui:

    
  •              Onde a 'saída' é definida?                                      3 respostas                          
  •     

Eu quero adicionar um argumento para bash alias script para que eu possa apenas executar

alias -p l='ls -l'

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

Eu tentei whereis alias , mas sem sorte. mesmo man alias mostra alias sem entrada.

Eu procurei em /usr/bin, /usr/share/local/bin , mas sem sorte. Alguém pode apontar a localização?

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

    
por Infinity 31.05.2018 / 15:20

4 respostas

17

alias é um comando interno, por isso não aparece como script em nenhum arquivo ou como função. O comando type 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 chamado com o builtin builtin.

Então, algo assim deve funcionar:

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

Se você quiser imprimir a mesma atribuição de alias em um arquivo, é necessário ter cuidado para citá-lo corretamente, para que seja utilizável como entrada para o shell.

Algo parecido com isso pode ser feito (adicionado logo após o shift na função), mas teste-o: printf "alias %q\n" "$@" >> ~/my.alias.file

Quanto ao problema Bash vs. Zsh, acho que o acima funciona com ambos, mas não sou especialista em Zsh.

A propósito, você também pode querer observar que o alias do Bash já tem uma -p opção help alias diz:

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

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

    
por 31.05.2018 / 15:31
2

Seu comando alias é provavelmente um shell-builtin, não um script. Você pode verificar isso usando o comando type :

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

Para obter a documentação sobre o alias incorporado, consulte a página bash man:

man bash

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

user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc
    
por 31.05.2018 / 15:23
1

Até onde eu sei, zsh não suporta aliases persistentes.

Se você gosta de aliases persistentes, recomendo que verifique o link para uma implementação de aliases com disponibilidade persistente.

Para outros shells, os aliases só podem ser gravados como comandos de alias dentro do arquivo .*shrc relacionado.

    
por 31.05.2018 / 15:37
0

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

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

    
por 01.06.2018 / 12:05

Tags