cd && ls function não funciona em outros aliases antes de recarregar o .bashrc?

0

Eu tenho o seguinte código no meu .bashrc :

c() { cd "$@" && ls -a ; }
alias cdd="c ~/Downloads"
alias r=". ~/.bashrc"

Quando eu carrego um novo terminal, cdd não funciona antes de eu executar o comando r . Mas depois de fazer isso, funciona como pretendido. Por que isso acontece?

Eu perguntei a esta mesma pergunta no Stack Overflow há alguns meses, mas nenhuma das respostas conseguiu me dar uma solução de trabalho. Aqui está o link para meus dotfiles se isso for de alguma utilidade.

EDITAR type -a c cdd r produz:

c is aliased to 'clear'
c is a function
c () 
{ 
    cd "$@" && ls --color=auto -a
}
cdd is aliased to 'c ~/Downloads'
r is aliased to '. ~/.bashrc'

Com base nessas informações, alterei a função c para d e ela funciona. Dito isto, existe alguma maneira que eu não poderia mapear a função clara para c como eu já tenho alias cs='printf "3c"' para isso)? Procurei em .bashrc , mas não consegui encontrar nada com a palavra "limpar".

    
por Kevin 30.01.2018 / 05:59

1 resposta

0

Se o c tiver alias para clear , mas não para os seus próprios arquivos de inicialização, é mais provável que ele seja feito nos arquivos de inicialização de todo o sistema em /etc . Verifique, por exemplo, /etc/bash.bashrc (ou consulte o manual bash para quais arquivos são usados, isso pode ser diferente entre os sistemas, dependendo de como o bash foi criado).

Não importa onde c tenha alias para clear , você pode usar unalias c antes de defini-lo como uma função com

unalias c

Você também pode considerar usar $HOME no lugar de ~ . Isto é devido a $HOME ser mais descritivo (e você não precisa realmente digitá-lo, pois ele faz parte de um alias, então você não "perde" nada), e que ele se comporta como uma variável, enquanto ~ não. Veja Por que o til (~) não expande dentro de aspas duplas

    
por 30.01.2018 / 09:20

Tags