Eu executei a seguinte função Bash que adiciona uma string com variáveis expandidas no final do meu bashrc
:
alias() {
echo "alias $repo=\"$HOME\"/$repo/$repo.sh" >> "$HOME"/.bashrc
source "$HOME"/.bashrc 2>/dev/null
}
alias
Para executá-lo eu copiei, colei no terminal Bash (lá apareceu uma vez) e executei pressionando Enter.
A saída que obtive ~/.bashrc
foi cerca de mil linhas da string acima:
alias $repo=\"$HOME\"/$repo/$repo.sh
O último comando ( source /home/user/.bashrc
) continuou sendo executado indefinidamente (suponho que devido à chamada interminável para a função), então abortei imediatamente com a ^C
combinação de teclas.
Depois de remover todas as mil repetições da string com uma mark-set
operação Nano e cut, desejo perguntar por que isso aconteceu (e continua acontecendo)?
Você definiu uma função chamada
alias
, adicionou uma linha a.bashrc
essa chamadaalias ...
e, em seguida, originou.bashrc
em seu shell (que já possui a função definida). Oalias
you sourced chama a função, que adiciona outra linha e origina o script novamente, chamando a função novamente uma vez para cada vez que ela já foi executada , levando a um crescimento exponencial.Altere o nome da sua função.