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,
bash
será prefixado em todas as linhas com uma expansão dePS4
. Aqui, fazemos com quePS4
exiba o arquivo de origem que está sendo lido. -
BASH_XTRACEFD=7
Isso envia o rastreio de execução para
7
, que é um descritor de arquivo escolhido na esperança de que os arquivos iniciadosbash
não sejam mexidos. -
bash -xl
Isso inicia o bash com as opções
-x
, o que faz com que todos os comandos sejam exibidos com o promptPS4
e-l
, que instruibash
a tratar isso como um shell de login. Se você não ficar incomodado em shells de login, tente sem-l
. -
7>&2
Isso 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.