Para descobrir quais comandos bash são executados na inicialização e de quais arquivos vieram esses comandos, execute:
PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7>&2
A saída é demorada, mas a fonte do jargão provavelmente ficará clara.
Explicação:
-
PS4='+$BASH_SOURCE> 'Ao criar um rastreamento de execução,
bashserá prefixado em todas as linhas com uma expansão dePS4. Aqui, fazemos com quePS4exiba o arquivo de origem que está sendo lido. -
BASH_XTRACEFD=7Isso envia o rastreio de execução para
7, que é um descritor de arquivo escolhido na esperança de que os arquivos iniciadosbashnão sejam mexidos. -
bash -xlIsso inicia o bash com as opções
-x, o que faz com que todos os comandos sejam exibidos com o promptPS4e-l, que instruibasha tratar isso como um shell de login. Se você não ficar incomodado em shells de login, tente sem-l. -
7>&2Isso redireciona a saída de rastreio de volta para stderr para exibição no terminal.
Três refinamentos
Com base no comentário de Geirha, esta versão adiciona três melhorias:
PS4='+ $BASH_SOURCE:$LINENO:' BASH_XTRACEFD=7 bash -xlic "" 7>&2
Existem três refinamentos aqui: (1) o prompt do PS4 agora também exibe o número da linha, bem como o nome do arquivo, (2) o -i faz o shell interativo, além de -l que o tornou um shell de login e (3) -c "" faz com que o shell saia após a conclusão da inicialização.