Linux / Comando unalias: remover atalhos do Bash
unalias remove aliases do processo Bash atual. Use unalias nome para remover um atalho ou unalias -a para remover todos. O comando não apaga definições salvas nos arquivos de inicialização nem altera aliases já carregados em outros shells.
Um alias é um atalho de texto expandido pelo shell, o interpretador de comandos. Se ele aplica opções inesperadas, confira sua definição antes de removê-lo. O guia de alias no Bash explica a criação e a persistência desses atalhos.
O que é o comando unalias?
alias registra um nome e seu texto de substituição; unalias elimina esse registro do processo atual. Depois, o mesmo nome pode ser interpretado como função, comando interno ou arquivo executável. PATH é a lista de diretórios em que o shell procura arquivos de comandos.
Os exemplos usam Bash. Outros shells podem ter opções ou arquivos de configuração diferentes. Para acompanhar a resolução dos nomes e as operações relacionadas, consulte a referência de comandos Linux em português.
Sintaxe básica
unalias [-a] [nome ...]
O bloco anterior é um esquema; não copie os colchetes nem as reticências. Informe pelo menos um nome ou use -a. Sem nome e sem essa opção, o Bash mostra a instrução de uso e retorna falha.
Remover um alias específico
O bloco abaixo cria um alias de teste e o remove na linha seguinte. Se ll já existir, confira e preserve sua definição antes de substituí-la. Depois da remoção, alias ll deve informar que ele não está definido.
alias ll='ls -alF'
unalias ll
Os blocos são exemplos independentes. Para testar a inspeção abaixo, defina novamente alias ll='ls -alF' antes de executá-la. A primeira linha mostra a definição, a segunda remove o alias e a última consulta o nome restante, sem executá-lo.
alias ll
unalias ll
type ll
Se não houver função ou arquivo chamado ll, type ll retorna falha após a remoção, o que é esperado. Se houver outro candidato, ele continua existindo. Use type para verificar as categorias e os candidatos, por exemplo type -a ll.
Remover vários aliases de uma vez
unalias ll la grep
No Bash, um nome que não é alias causa estado diferente de zero. Isso não significa que a operação inteira foi desfeita: outros aliases indicados podem ter sido removidos. Consulte os nomes depois, em vez de tratar uma falha como ausência de qualquer alteração.
Remover todos os aliases
Antes de remover tudo, veja as definições atuais. A linha abaixo somente as imprime; não grava um backup em arquivo. Se precisar recuperá-las, copie a saída para um arquivo de texto novo, como aliases-backup.sh, sem sobrescrever um arquivo existente.
alias -p
unalias -a remove todas as definições do processo atual, inclusive personalizações fornecidas pela distribuição. Compare com a listagem preservada e prefira remover só o nome envolvido no problema, quando possível.
Depois de preservar o que precisa, a próxima linha faz a remoção geral. Ela não remove funções, variáveis, arquivos de programas nem definições dos arquivos de inicialização.
unalias -a
Diferença entre remoção temporária e remoção permanente
Remover no shell atual
unalias só altera a tabela de aliases do Bash em que é executado. Um novo shell pode definir novamente o atalho ao ler sua configuração. Remover um alias em um script filho também não o remove do terminal pai.
Impedir a recriação em novos terminais
Para impedir a recriação, localize o arquivo que define o alias, guarde uma cópia antes de editá-lo e remova ou comente apenas a linha pertinente. A busca abaixo procura uma forma comum de definição de ll nos dois arquivos do usuário.
grep -n "alias ll=" ~/.bashrc ~/.bash_aliases 2>/dev/null
Essa busca não é completa: espaços diferentes, nomes construídos dinamicamente ou outros arquivos podem esconder a origem. 2>/dev/null oculta mensagens como “arquivo inexistente” ou “permissão negada”; ausência de resultado não prova ausência de definição. Depois de editar, use unalias ll no shell atual, se ele ainda estiver definido. Abrir um novo Bash permite verificar se a configuração parou de recriá-lo.
Recarregar não equivale a remover. A linha seguinte executa todo o conteúdo de ~/.bashrc; não desfaz um alias que ficou na memória só porque sua definição foi apagada do arquivo. Use-a apenas depois de revisar o arquivo e de remover separadamente o alias atual, quando essa for a intenção.
source ~/.bashrc
Os arquivos carregados dependem da distribuição e do modo de inicialização. Bash interativo sem login lê ~/.bashrc; um shell de login pode chegar a ele por seu perfil. ~/.bash_aliases, /etc/bash.bashrc ou arquivos em /etc/profile.d/ só participam quando a configuração correspondente os carrega. Confira as regras de inicialização do Bash antes de alterar arquivos compartilhados.
Executar uma vez sem aplicar o alias
Para executar uma vez sem aplicar o alias, pode bastar uma barra invertida no nome ou um caminho absoluto confirmado. As linhas abaixo executam o nome ou arquivo indicado; quando chegam ao ls padrão, listam o diretório atual.
\ls
/usr/bin/ls
\ls impede a expansão do alias ls, mas ainda pode chamar uma função. Um caminho absoluto evita a busca por nome; confirme primeiro com type -P ls se /usr/bin/ls é o caminho adequado no seu sistema. Ele não é universal entre instalações.
Distinguir alias, função, variável e arquivo
| Alvo | Operação de remoção | Como verificar |
|---|---|---|
| Alias | unalias nome |
alias nome ou type nome |
| Funções do shell | unset -f nome |
declare -F nome ou type nome |
| Variável do shell | unset -v nome |
declare -p nome |
| Arquivo executável | Use comandos de gerenciamento de arquivos | type -a nome ou command -v nome |
unalias não remove funções ou arquivos homônimos. Para distinguir variável e função ao usar unset, a tabela especifica -v ou -f. Sem opção, o Bash pode remover uma função se não encontrar uma variável com o nome indicado; consulte a documentação de unset.
Remover somente se o alias existir
O trecho seguinte consulta se ll é um alias e só então o remove. Rode-o no shell que contém a definição. Ele não chama ll e descarta os diagnósticos da consulta; se o alias não existir, simplesmente não entra no bloco.
if alias ll >/dev/null 2>&1; then
unalias ll
fi
Por padrão, um Bash não interativo não expande aliases nem herda os aliases locais do terminal pai. Ativar expand_aliases não importa essas definições. Escreva scripts com dependências explícitas; um script separado não limpa aliases do processo que o chamou.
Problemas comuns
O alias reaparece em outro terminal
Algum arquivo carregado pelo novo shell redefine o alias. Inspecione o perfil, ~/.bashrc e os arquivos que eles leem; ~/.bash_aliases não é carregado automaticamente apenas por ter esse nome. Mude a definição na origem e confira em uma nova sessão.
A mensagem contém “not found”
Leia a mensagem inteira. Algo como bash: unalias: ll: not found indica que ll não está definido como alias nesse processo. Já unalias: command not found indica que o próprio comando não foi encontrado: confirme o shell em uso e consulte type unalias. No Bash, um comando interno também pode ter sido desabilitado. Os textos exatos variam com versão e idioma.
O comportamento ainda é diferente
Confira type -a nome: pode haver uma função ou executáveis em caminhos diferentes. O hash guarda caminhos de executáveis, não aliases; hash -r limpa esse cache, mas não remove uma função. Execute a consulta em outra linha: um alias já expandido durante a leitura de uma linha ou comando composto não é “desexpandido” por um unalias executado depois nessa mesma unidade.
Escolher a operação conforme a situação
| Situação | Método recomendado |
|---|---|
| Execute o comando original apenas uma vez | Use \nome para evitar a expansão do alias ou execute um caminho absoluto confirmado. |
| Remover alias no terminal atual | Use unalias nome. |
| Remover temporariamente os efeitos de todos os aliases | Verifique a lista e então use unalias -a. |
| Remover também em um novo terminal | Modificar o arquivo de inicialização onde o alias está definido. |
| Remover uma função com o mesmo nome | Use unset -f nome. |
Perguntas frequentes
Posso restaurar os aliases após unalias -a?
Não há um comando de desfazer. Se você preservou as definições em aliases-backup.sh, revise o arquivo e use source ./aliases-backup.sh para recriá-las no processo atual. Recarregar um arquivo de inicialização também pode recriar aliases persistentes, mas executa todo o seu conteúdo e não recupera definições locais que não foram salvas.
unalias afeta outros terminais?
Não. Cada processo de shell de um terminal tem sua própria tabela de aliases separada, portanto, o unalias executado no shell atual não afeta diretamente outros shells.
O que acontece ao digitar o nome removido?
O Bash procura por funções restantes, comandos internos e arquivos executáveis em PATH de acordo com as regras de busca de comandos. O resultado real da seleção pode ser verificado com type nome.




