重启zsh

重启zsh

我刚刚编辑了 .zshrc 文件来配置Z壳在 FreeBSD 上,例如更新小路系统变量。

path+=/usr/local/openjdk12/bin

如何使更改生效?

我必须注销并重新登录吗?有没有办法立即运行该文件?

答案1

重启zsh

Zsh.zshrc启动时读取。您不需要注销并重新登录。只需关闭终端并打开一个新终端即可.zshrc在这个新终端中获得新的信息。但你可以让这更直接。只需告诉 zsh 重新启动即可:

exec zsh

如果您在 zsh 提示符下运行此命令,则会将当前的 zsh 实例替换为在同一终端中运行的新实例。新实例具有相同的环境变量与前一个相同,但有新鲜感(非导出)变量,并且它开始一个新的历史记录(因此它将在典型配置中混合来自其他终端的命令)。任何后台工作都被拒绝。

重读.zshrc

您还可以告诉 zsh 重新读取.zshrc.这样做的优点是可以保留 shell 历史记录、shell 变量和后台作业的知识。但根据您在 中放入的内容.zshrc,这可能有效,也可能无效。.zshrc如果运行两次,重新读取运行的命令可能不起作用,或者不能很好地起作用。

. ~/.zshrc

.zshrc如果您希望能够运行两次,您可以做的事情太多了,无法枚举所有可以和不可以放入的内容。这里只是一些常见问题:

  • 如果附加到变量(例如fpath+=(~/.config/zsh)chpwd_functions+=(my_chpwd)),则会再次附加相同的元素,这可能会或可能不会出现问题。
  • 如果您定义别名,并且还使用与命令相同的名称,则该命令现在将运行别名。例如,这有效:
    function foo { … }
    alias foo='foo --common-option'
    
    但这不会,因为第二次获取文件时,foo ()将扩展别名:
    foo () { … }
    alias foo='foo --common-option'
    
  • 如果您修补现有的 zsh 函数,那么您现在将修补您自己的版本,这可能会造成混乱。
  • 如果您执行“交换两个键的绑定”之类的操作,那么第二次就不会执行您想要的操作。

答案2

对 shell 初始化文件的更改将在下一个您启动的 shell,例如,如果您打开一个新的图形终端或注销并再次登录。如果您所做的更改会以某种方式影响您的桌面环境(我不知道可能是什么类型的更改),则需要注销并再次登录。

可以. /path/to/filename使用(在您的情况下)获取文件. ~/.zshrc或从命令行启动新的 shell 会话zsh,但这几乎从来都不是一个好主意,因为它可能会产生不必要的后果,例如向变量添加重复路径$PATH或启动额外的ssh-agent进程或其他任何内容您可能正在该文件中执行操作。这些更改也不会在已经启动的程序中可见。

对于诸如无条件添加之类的更改$PATH,您显然可以在当前 shell 中运行添加的命令:

$ path+=/usr/local/openjdk12/bin

这会将目录(在 中zsh)添加到当前 shell 会话中/usr/local/openjdk12/bin的末尾(以及中数组$PATH的末尾)。同样,此更改不会影响已经运行的进程。$pathzsh$PATH

答案3

您可以获取新文件,这将适用于某些更改,可能包括更新 PATH 变量(取决于其他行)。但是,采购它只会.zshrc再次运行,并且您可能会执行意外的重复命令。此外,如果旧的中删除了行.zshrc,那么它们不会从会话中“删除”。

最干净的方法是注销并重新登录。您只需要为终端会话执行此操作,而不是整个桌面环境。

答案4

哦我的Zsh

哦我的Zsh是一个开源的、社区驱动的框架,用于管理您的 Zsh 配置。

安装后,您可以运行以下命令:

omz reload

重新加载.zshrc配置文件。

相关内容