Os aliases retardam o início de um shell?

4

Às vezes, meu shell (zsh) demora mais para iniciar do que o usual (eu abro o terminal e ele trava um pouco até que eu possa inserir comandos).

Eu tenho alguns aliases no meu .zshrc (bem, na verdade eles estão em um arquivo diferente que .zshrc faz um source on).

Se você tornar um alias com o shell aberto, ele permanecerá válido somente durante a sessão atual, por isso comecei a me perguntar se tudo isso source e alias realmente prejudicaria o desempenho de inicialização do shell (estou assumindo ele tem que passar por um longo processo de executar todos esses comandos no início).

Se isso acontecer, não seria mais eficiente ter esses aliases como scripts de shell e colocá-los em algum lugar em meu PATH ?

    
por user137369 29.01.2013 / 22:04

3 respostas

5

É improvável que ter algumas definições adicionais de alias em seus arquivos de inicialização seja responsável por atrasos de inicialização perceptíveis. Mesmo se você tivesse tantos que realmente importavam, o atraso não seria esporádico, seria o mesmo o tempo todo.

O mais provável é que algo ao longo do caminho na sua sequência de inicialização esteja aguardando pela rede. Um exemplo seria um diretório de caminho que está em uma unidade de rede que não está pronta ou talvez não esteja ligada. Tempos limite de rede são muitas vezes muitos segundos.

    
por 29.01.2013 / 22:48
0

Talvez você NÃO esteja fazendo um "despejo" do seu sistema de conclusão ao chamar o compinit? (Isso poderia desacelerar o zsh no arranque ...). Se você estiver usando o compinit, certifique-se de apenas chamar

autoload -U compinit
compinit

(sem opções engraçadas para compinit, especificamente sem -D ).

Depois de usar isso, a primeira vez que você iniciar um shell será lento (já que irá gerar o despejo, mas os próximos não serão).

Outros pensamentos, talvez o seu sistema mexe com as funções de conclusão, e um novo despejo é gerado com força a cada vez? Tente definir o compinit no seu .zshrc com -C (depois de gerar o despejo pelo menos uma vez).

    
por 06.02.2013 / 11:14
0

Para aqueles que usam o oh-my-zsh, vale a pena saber que ele define um nome diferente para o arquivo .zcompudump, é: $ ZSH_COMPDUMP. A ideia é testar se o arquivo tem mais de um dia e o regenera. Minha tentativa, por favor, caras comentam para me dar alguns conselhos sobre isso:

autoload -Uz compinit
if [[ -n ${ZDOTDIR:-${HOME}}/$ZSH_COMPDUMP(#qN.mh+24) ]]; then
    compinit -d $ZSH_COMPDUMP;
else
    compinit -C;
fi;

# -D ........... disables .zcompudump file
# -d ........... used to set an alternative name to .zcompdump
# -i ........... accept insecure files
# -C ........... ignore checking at all

Referências:

por 31.07.2017 / 00:31