Este bug é o resultado de algum design questionável no Atom. Não é específico para o Z Shell, além disso. As pessoas experimentam com outras conchas também.
O Atom quer conhecer as variáveis de ambiente do seu shell de login interativo por algum motivo. Para fazer isso, ele gera uma instância do shell escolhido, diz para executar o comando env
(depois de executar todos os seus scripts de inicialização) usando a opção de linha de comando -c
do shell e captura a saída disso. Ele tenta garantir que ele não atinja nenhum alias de shell, então ele executa command env
e tenta obter o ambiente como seria para um shell login , dando ao shell escolhido um -l
opção de linha de comando também.
Os desenvolvedores do Atom descobriram que as pessoas não estavam configurando o ambiente corretamente para os shells de login não interativos . Para contornar isso, eles fizeram também fornecer o shell com a opção -i
que diz ao shell para pensar que ele é um shell de login interativo mesmo se o seu padrão I / O não aparece interativa.
Infelizmente, eles invocam um shell interativo de tal forma que shells como o Z Shell vão todo o porco e tentam ler as entradas interativamente. Mas o Atom não fornece nenhuma entrada, apenas um fim de arquivo.
Insira as opções ignoreeof
do shell Z e do Bourne Again como o elemento final dessa comédia. Essas opções significam que os shells continuam tentando para ler a entrada, mesmo que obtenham o fim do arquivo na entrada padrão. Eles fazem isso em um loop bem apertado. Daí o uso da CPU.
Leitura adicional
- Daniel Stone (2016-10-27). O envio de dados para coletar variáveis de ambiente está criando 100% de processos de CPU no Linux . Atom bug tracker. # 13084.