我刚刚编辑了 .zshrc 文件以在 FreeBSD上配置Z shell,例如更新PATH系统变量。
path+=/usr/local/openjdk12/bin
Run Code Online (Sandbox Code Playgroud)
如何使更改生效?
我必须注销并重新登录吗?有没有办法立即运行该文件?
Gil*_*il' 17
Zsh.zshrc
在启动时读取。您不需要注销并重新登录。只需关闭终端并打开一个新终端,您就可以.zshrc
在这个新终端中获得新的信息。但是你可以让这更直接。只需告诉 zsh 重新启动自己:
exec zsh
Run Code Online (Sandbox Code Playgroud)
如果您在 zsh 提示符下运行它,这会将 zsh 的当前实例替换为在同一终端中运行的新实例。新实例具有与前一个相同的环境变量,但具有新的shell(非导出)变量,并且它开始了一个新的历史记录(因此它会在典型配置中混入来自其他终端的命令)。任何后台工作都被否认。
.zshrc
您也可以告诉 zsh 重新读取.zshrc
. 这具有保留 shell 历史记录、shell 变量和后台作业知识的优点。但是,根据您在.zshrc
. .zshrc
如果您运行两次,重新读取运行的命令可能无法正常工作或无法正常工作。
. ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
.zshrc
如果您希望能够运行两次,您可以做太多的事情来枚举所有可以和不可以放入的东西。这里只是一些常见的问题:
fpath+=(~/.config/zsh)
或chpwd_functions+=(my_chpwd)
),这将再次附加相同的元素,这可能是也可能不是问题。function foo { … }
alias foo='foo --common-option'
Run Code Online (Sandbox Code Playgroud)
但这不会,因为第二次获取文件时,foo ()
将扩展别名:
foo () { … }
alias foo='foo --common-option'
Run Code Online (Sandbox Code Playgroud)对 shell 初始化文件的更改将在您启动的下一个shell 中生效,例如,如果您打开一个新的图形终端或注销并再次登录。如果您所做的更改会以某种方式影响您的桌面环境(我不知道可能是哪种更改),则需要注销并再次登录。
您可以使用. /path/to/filename
(. ~/.zshrc
在您的情况下)获取文件或从命令行使用 启动一个新的shell会话zsh
,但这几乎从来都不是一个好主意,因为它可能会产生不需要的后果,例如向$PATH
变量添加重复路径或启动额外的ssh-agent
进程或无论您在该文件中做什么。更改也不会是已经启动的可见程序。
对于诸如$PATH
无条件添加之类的更改,您显然可以在当前 shell 中运行添加的命令:
$ path+=/usr/local/openjdk12/bin
Run Code Online (Sandbox Code Playgroud)
这将(在zsh
)将/usr/local/openjdk12/bin
目录添加到当前 shell 会话中的末尾$PATH
(以及$path
数组的末尾zsh
)。同样,此更改$PATH
不会影响已经运行的进程。
归档时间: |
|
查看次数: |
19657 次 |
最近记录: |