Reiniciar un proceso zsh sin tener sesiones "anidadas"

Reiniciar un proceso zsh sin tener sesiones "anidadas"

Me gustaría reiniciar mi sesión zsh, porque mantengo una sesión tmux persistente y cambio ~/.zshrccon frecuencia source ~/.zshrc. Sin embargo, me di cuenta de que esto se vuelve más lento con el tiempo (por ejemplo, for i inla secuencia 50 ; do source ~/.zshrc; echo "a"; donecomienza a imprimir 'a' rápidamente y se vuelve más lenta rápidamente).

Leí las sugerencias aquí para reiniciar zsh y la sugerencia es simplemente ejecutar zsho zsh -l. Sin embargo, si hago eso, creo una sesión zsh 'anidada', si lo entendí correctamente. Con eso quiero decir:

# 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

Tengo una sesión tmux con múltiples ventanas y un historial de comandos que me importa mantener persistente. Por eso busco una solución sostenible.

Pregunta extra:¿Alguien tiene alguna idea de por qué source ~/.zshrcpodría 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

Respuesta1

Simplemente reemplace la instancia zsh que está ejecutando por una nueva:

exec zsh

execes unshell incorporadocomando con el propósito de (ver zshbuiltinspágina de manual):

Reemplace el shell actual con comando en lugar de bifurcarlo.

Por qué se está volviendo más lento... Mi primera especulación sería que redefinas PATH en tu zshrc, tal vez con un directorio en un disco bastante lento. Entonces, cada vez que obtienes tu búsqueda zshrc, tu ruta de búsqueda se hace cada vez más larga. Y cada vez zshhay que repetir más y más directorios...

Por favor lee miresponder a otropreguntarse cómo mejorar esa situación.

información relacionada