TL; DR: Executar hash -r
ou apenas iniciar um novo shell geralmente corrige esse problema.
Se o arquivo está realmente acabado, então o shell provavelmente ainda está com hash.
Primeiro, sugiro que você verifique se /usr/local/bin/cpan
desapareceu:
ls -l /usr/local/bin/cpan
Se houver algo lá, você não desinstalará completamente. Se não houver nada lá, você receberá esta mensagem:
ls: cannot access '/usr/local/bin/cpan': No such file or directory
Supondo que você recebeu essa mensagem, mas bash
está tentando executar /usr/local/bin/cpan
quando você digita cpan
e pressiona Enter , o problema é mais provável que bash
ainda tem esse caminho hash . Em vez de pesquisar onde os comandos externos estão sempre, os shells normalmente dividem seus locais. Assim, você pode corrigir o problema informando bash
para "rehash" executando:
hash -r
Ou inicie um novo shell.
Se isso não funcionar, verifique se é uma função de alias ou shell.
Se o arquivo ainda não estiver presente ou ainda estiver com hash, é provável que cpan
seja um alias ou função shell que atue como um wrapper para /usr/local/bin/cpan
. Para verificar isso, execute:
type -a cpan
Se for uma função de alias ou shell, isso mostrará a definição. Então você pode desanexá-lo com unalias cpan
se for um alias ou unset -f cpan
se for uma função shell.
Por fim, você desejará remover a definição de qualquer script de inicialização que a contenha. Geralmente, ele estará no arquivo .bashrc
em seu diretório inicial. Os aliases são às vezes definidos em .bash_aliases
. (Ocasionalmente, as pessoas definem aliases e funções de shell em .profile
, .bash_profile
ou .bash_login
, embora essa não seja uma prática muito boa.)
Se isso não funcionar, pense em como você está executando cpan
ou em qual shell você está.
Se o arquivo sumiu, ainda não foi hash, não é um alias ou função shell, e type -a
não revela o problema , então provavelmente você está (a) não executando cpan
diretamente por meio desse comando ou (b) usando um shell diferente de bash
. No primeiro caso, não há como responder sem mais detalhes.
O último caso parece improvável, já que seu shell chama a si mesmo bash
, embora de vez em quando alguém faça um symlink chamado bash
para um shell que não é (o que não é aconselhável). A verdade é que estou mencionando principalmente isso para o benefício de outros leitores. Com base nessa mensagem, você está quase certamente usando bash
.
No entanto, caso você não seja ou não seja, execute echo "$BASH_VERSION"
para ver se você está executando bash
- isso deve ser definido em outros shells - e echo "$SHELL"
para ver o que é seu < em> padrão shell é. Rehashing funciona de forma diferente - ou é pelo menos alcançado de forma diferente - em outros shells.
Alguns outros shells do estilo Bourne, como zsh
, têm um comando rehash
que você executaria em vez de hash -r
. Também é assim que você faria com que ocorria novamente em csh
e tcsh
.