Sim. A abordagem mais simples seria ter um arquivo em que seus aliases sejam definidos em cada diretório. Então, por exemplo:
$ cat dir1/.alias
alias eg='echo "this is dir1"'
$ cat dir2/.alias
alias eg='echo "this is dir2"'
No exemplo acima, cada diretório contém um arquivo chamado .alias
, em que o eg
alias está definido. Agora, cd
em um deles, fonte do arquivo, e o alias fica disponível:
$ cd dir1 && source .alias
$ eg
This is dir1
$ cd ../dir2 && source .alias
$ eg
This is dir2
Se você deseja que isso seja feito automaticamente, adicione esta linha ao seu ~/.bashrc
:
## Check if an '.alias' file exists and, if it does, source it.
PROMPT_COMMAND='[ -e .alias ] && source .alias'
A variável PROMPT_COMMAND
define um comando que é executado antes de cada prompt ser mostrado, portanto, após qualquer comando executado. Isso significa que, assim que você entrar em um diretório que contenha um arquivo .alias
, esse arquivo será originado.
Notas
-
Isso é inseguro. Qualquer código dentro do arquivo
.alias
será executado. Use por sua conta e risco. A abordagem manual é muito mais segura. -
Todos os alias definidos no arquivo
.alias
ainda estarão disponíveis depois que você sair do diretório, até que sejam substituídos por outra definição de alias com o mesmo nome. Se isso for um problema, você pode limpar todos os aliases e, em seguida, recarregá-los com:unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases
Para simplificar, crie uma função adicionando essas linhas ao seu
~/.bashrc
:clear_aliases(){ unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases; }
Você poderá, então, executar
clear_aliases
para redefinir seus padrões.