我有一个精心创建的.zshrc
,我不想在其中添加任何未手动添加的内容。是否有可能某些程序、安装程序或命令会自动在其中添加一些行?(即在最开始还是在最结尾?)
换句话说,我确实明白echo foo > ~/.zshrc
会对其进行修改,但还有其他类似的情况吗?
我有一个精心创建的.zshrc
,我不想在其中添加任何未手动添加的内容。是否有可能某些程序、安装程序或命令会自动在其中添加一些行?(即在最开始还是在最结尾?)
换句话说,我确实明白echo foo > ~/.zshrc
会对其进行修改,但还有其他类似的情况吗?
这当然是可能的:您运行的任何程序都有权修改您的
.zshrc
。但在实践中,当然,大多数程序不会这样做。与 zsh 直接相关的安装程序和配置可能会修改
.zshrc
,例如 oh-my-zsh 的安装程序。这是非常合理的:这是你要求的。一些以 shell 脚本形式出现并旨在用于用户帐户的软件安装程序会修改用户的
.bashrc
或.zshrc
。它们这样做是为了设置 shell 补全、PATH
条目、别名、函数等。这并不总是合理的,而且它们所做的并不总是与您的配置兼容。PATH
特别是不应该存在于.zshrc
(比.bashrc
)fpath
中,但这种混乱仍然存在。补全和函数在某种程度上是合理的,因为在用户的主目录下没有标准条目。在实践中,我已经看到过用于开发环境的安装程序,例如
opam init
(要求确认)或nvminstall.sh
(这很粗鲁)。为了跟踪你手动完成的工作,一种可能性是制作
~/.zshrc
一个非常小的文件,该文件仅包含另一个文件,例如然后,如果其他所有内容都出现在中
~/.zshrc
,您就知道它已被自动添加。另一种方法是保持你的
.zshrc
版本控制。然后git diff
或类似的东西就会显示未提交的更改。您可以将这两种方法结合起来。
默认情况下,没有什么可以阻止应用程序修改您的帐户配置文件。
如果这确实是一个大问题,我建议将您的配置文件复制到一个目录,将所有内容检查到 git 中,然后将它们符号链接回它们所属的位置。
这样,如果确实有东西修改了它们,您可以快速看到改变了什么(git diff)并快速接受或恢复它。
或者,您可以尝试
chmod gou-w ~/.zshrc
,尝试进行更改的简单应用程序将会失败,但这仍然是可能的。同样,如果这是非常关键的,并且您有 root 访问权限,那么您可以更改权限,这样即使您自己也无法更改它。您可以使用它来
chattr +i
使其不可变(如果支持)或仅更改所有权(chown root .zshrc
),但有些事情可能会让您不满意您不拥有自己的配置文件,并且它仍然可以重命名。