Reinicie um processo zsh sem ter sessões "aninhadas"

Reinicie um processo zsh sem ter sessões "aninhadas"

Gostaria de reiniciar minha sessão zsh, porque mantenho uma sessão tmux persistente e mudo ~/.zshrccom frequência e faço source ~/.zshrc. No entanto, percebi que isso fica mais lento com o tempo (por exemplo, for i ina sequência 50 ; do source ~/.zshrc; echo "a"; donecomeça a imprimir 'a' s rapidamente e fica mais lenta rapidamente).

Eu li as sugestões aqui para reiniciar o zsh e a sugestão é simplesmente executar zshor zsh -l. No entanto, se eu fizer isso, crio uma sessão zsh 'aninhada', se entendi corretamente. Com isso quero dizer:

# Simulate slowed zsh session
for i in `seq 50`; do source ~/.zshrc; echo "a"; done
# use zsh to make it faster "child" zsh
zsh
# confirm fast
source ~/.zshrc; # fast
# revert back to "parent" zsh
exit
# confirm old slow session is still there
source ~/.zshrc; # slow

Eu tenho uma sessão tmux com várias janelas e um histórico de comandos que pretendo manter persistente. É por isso que procuro uma solução sustentável.

Pergunta bônus:alguém tem alguma idéia de por que source ~/.zshrcpode estar desacelerando?

# Path to your oh-my-zsh installation.
export ZSH="/Users/username/.oh-my-zsh"

ZSH_THEME="themename"

# Which plugins would you like to load?
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
  git
)

source $ZSH/oh-my-zsh.sh


# activate zsh-syntax-highlighting (brew install zsh-syntax-highlighting)
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

function proxyON() {
...redacted
}

function proxyOFF(){
 http_proxy=
 https_proxy=
 HTTP_PROXY=
 HTTPS_PROXY=
 export http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
}

function nukeDS_Store(){
 find ~/Projects/mys/ -name '.DS_Store' -delete
}

function reload-ssh() {
   ssh-add -e /Library/OpenSC/lib/opensc-pkcs11.so >> /dev/null
   if [ $? -gt 0 ]; then
       echo "Failed to remove previous card"
   fi
   ssh-add -s /Library/OpenSC/lib/opensc-pkcs11.so 
}

alias fastBuild='mvn install --offline -DskipTests=true'

## History Settings
# set history size
export HISTSIZE=1000000
#save history after logout
export SAVEHIST=1000000
##history file
export HISTFILE=~/.zhistory
##save only one command if 2 common are same and consistent
setopt HIST_IGNORE_DUPS
##add timestamp for each entry
setopt EXTENDED_HISTORY   
##have seperate history for each
setopt nosharehistory
##dont append into history file
setopt NOINC_APPEND_HISTORY


# Set java version
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_191`


# Maven
export M3_HOME="/Applications/apache-maven-3.6.0" # replace n.n.n with appropriate version
export M3=$M3_HOME/bin
export PATH=$M3:$PATH

## set node version
export PATH="/usr/local/opt/node@8/bin:$PATH"

## pic-tools
source /Projects/pic-tools/scripts/*.env

Responder1

Basta substituir a instância zsh que você está executando por uma nova:

exec zsh

execé umshell embutidocomando com o objetivo de (ver zshbuiltinspágina de manual):

Substitua o shell atual pelo comando em vez de bifurcar.

Por que está ficando mais lento... minha primeira especulação seria que você redefina PATH no seu zshrc, talvez com um diretório em uma unidade bastante lenta. Assim, depois de cada vez que você obtém seu arquivo zshrc, seu caminho de pesquisa fica cada vez mais longo. E cada vez zshé preciso refazer mais e mais diretórios...

Por favor leia meuresponder a outroquestionar como melhorar essa situação.

informação relacionada