zsh*_*zsh 5 mac zsh shell macos
我最近从 ubuntu 切换到 macOS Big Sur 11.1,并且苹果正在使用zsh他们的默认 shell。该.zsh_sessions文件夹正在占用大约100 MB,我想完全禁用它,虽然我可以正常删除。
我在我的中添加了以下内容,.zshrc但没有用
set hist_ignore_all_dumps
setopt hist_ignore_space
setopt HIST_NO_FUNCTIONS
SHELL_SESSION_HISTORY=0
我想完全禁用 .zsh_sessions 文件夹的创建。
PS:-我已经在这里问过问题,但没有找到答案。
为 Zsh 设置 macOS 的“保存/恢复 Shell 状态”功能的代码可以在 中找到/etc/zshrc_Apple_Terminal。如该文件中所述,要禁用此功能,您需要执行以下操作:
.zprofile.export SHELL_SESSIONS_DISABLE=1\nRun Code Online (Sandbox Code Playgroud)\n~/.zprofile当 Zsh 作为交互式shell(登录或未登录)启动时,它将按顺序获取/etc/zshrc和。~/.zshrc如果(且仅当)macOS\xe2\x80\x99s/etc/zshrc在 Terminal.app 内运行时,它会调用/etc/zshrc_Apple_Terminal,从而启动 \xe2\x80\x9cSave/Restore\xe2\x80\x9d 功能。这意味着您无法在 中设置变量来禁用此功能,因为仅在该功能已启动且 \xe2\x80\x9crestored\xe2\x80\x9d 为您之前的会话后才~/.zshrc读取该文件。
但是,每当您在 Apple\xe2\x80\x99s Terminal.app 中打开新选项卡或窗口时,它都会启动一个新的交互式登录shell。当 Zsh 登录 shell 启动时,它会进行源操作,并在源操作之前~/.zprofile执行此操作。/etc/zshrc
export变量作为登录 shell 后代的交互式 shell 本身并不自动成为登录 shell。因此,如果您仅通过设置变量来禁用每个登录 shell 中的该功能,则任何以 开头的子 shellexec zsh仍会在启用 \xe2\x80\x9cSave/Restore\xe2\x80\x9d 功能的情况下启动。
要解决这个问题,您需要export该变量。这会将其放入 shell 的环境中。每个子进程都会继承其父\xe2\x80\x99s环境,以及其中的所有变量。这样,您可以确保在作为登录 shell 后代的交互式 shell 中也禁用 \xe2\x80\x9cSave/Restore\xe2\x80\x9d 功能,但不一定是登录 shell 本身。