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 alias
mostra que o alias não tem entrada.
Eu olhei, /usr/bin, /usr/share/local/bin
mas 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 type
comando 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 builtin
builtin.
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 shift
funçã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 alias
já tem uma -p
opção help alias
que diz:
Options:
-p print all defined aliases in a reusable format
Não sei se adianta, já que o comportamento padrão de alias
sem argumentos também é imprimir todos os aliases em um formato reutilizável.
Responder2
Seu alias
comando provavelmente é um shell integrado, não um script. Você pode verificar isso usando o type
comando:
user@host:~$ type alias
alias is a shell builtin
Para obter a documentação sobre o alias
builtin, você deve consultar a bash
pá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 ~/.bashrc
arquivo, por exemplo:
user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc
Responder3
Pelo que sei, zsh
nã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 .*shrc
arquivo 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