"중첩" 세션 없이 zsh 프로세스 다시 시작

"중첩" 세션 없이 zsh 프로세스 다시 시작

~/.zshrc하나의 영구 tmux 세션을 유지하고 자주 변경하고 수행하기 때문에 zsh 세션을 다시 시작하고 싶습니다 source ~/.zshrc. 그러나 나는 이것이 시간이 지남에 따라 느려진다는 것을 깨달았습니다(예: for i inseq 50은 ; do source ~/.zshrc; echo "a"; done'a'를 빠르게 인쇄하기 시작하고 빠르게 느려집니다).

zsh를 다시 시작하라는 제안을 여기에서 읽었으며 제안은 간단히 실행하는 것입니다 zsh또는 zsh -l. 그러나 그렇게 하면 올바르게 이해했다면 '중첩된' zsh 세션을 생성하게 됩니다. 내 말은:

# 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

여러 개의 창이 있는 tmux 세션과 지속적으로 유지하려는 명령 기록이 있습니다. 그래서 저는 지속 가능한 솔루션을 찾고 있습니다.

보너스 질문:source ~/.zshrc왜 속도가 느려지는지 아는 사람이 있나요 ?

# 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

답변1

실행 중인 zsh 인스턴스를 새 인스턴스로 바꾸세요.

exec zsh

exec쉘 내장목적을 가진 명령( zshbuiltins맨 페이지 참조):

현재 셸을 분기하는 대신 명령으로 바꿉니다.

점점 느려지는 이유... 내 첫 번째 추측은 zshrc다소 느린 드라이브에 하나의 디렉토리를 사용하여 에서 PATH를 재정의하는 것입니다. 따라서 을 소싱할 때마다 zshrc검색 경로가 점점 길어집니다. 그리고 매번 zsh점점 더 많은 디렉토리를 다시 해시해야 합니다...

내 글을 읽어주세요다른 사람에게 대답하다그 상황을 개선하는 방법에 대해 질문합니다.

관련 정보