732 字
4 分钟
误操作导致.zshrc文件清空的抢救措施||注意重定义操作符的用法||shell的配置文件坏掉
2024-01-25
无标签

序言#

进来提醒第一件事:以后记得定时备份!定时备份!定时备份!

因为一个误操作,我把自己的.zshrc搞坏了。

误操作介绍#

先介绍一下我是怎么把配置文件搞坏的。我是通过如下命令导致的,也就是我的上一篇文章,关于riscv的gnu工具链安装的时候,将bin目录写入环境变量少了一个<号

正确的:

Terminal window
echo “export PATH=/opt/riscv/bin:$PATH >> ~/.bashrc

错误的:

Terminal window
echo “export PATH=/opt/riscv/bin:$PATH > ~/.bashrc

>>是重定向操作符,可以追加写而不会覆盖原文件,我由于少了一个>,酿成了大错。

抢救过程#

当然,如果你的.zshrc文件真的已经寄了,并且像我一样没有备份,那么应该是做不到完全抢救回来的,能救多少救多少吧

环境介绍#

我是zsh,并且使用了oh-my-zsh作为配置zsh的工具——oh-my-zsh对于抢救我的环境做出卓越贡献!

此时我运行了上面的错误命令,并且毫无察觉地运行了source ~/.zshrc,出现了错误,并且出现在第一行!我知道,糟了!

开始抢救#

存储当前环境变量#

如我刚才所说,source刷新环境变量的命令报错了,刷新环境变量失败,虽然我如果新打开终端那么我这个终端必然已经没有办法使用了,但是对于我现有的终端来说,环境变量依然建在,我们可以通过以下命令存储当前环境中苟延残喘的环境变量和其他配置信息:

Terminal window
set > ~/.zshrc.envvars # 环境变量
alias > ~/.zshrc.aliases # 别名
functions > ~/.zshrc.functions # 函数方法

环境变量对于之后的修复还是挺有用的,另外两个如果你没有什么特殊的设置就可以直接不做了。 如果你对于.zshrc的组成足够了解,那么现在你就可以开始根据这些变量重新写一份了(不建议)!

复制一份新的.zshrc#

补充内容:我在之后查资料的过程中了解到可以使用print -l ${(ok)env} > ~/.zshrc.envbackup 这个命令存储当前环境变量,不知道和上面的那种方式有什么不同。上面那种存储环境变量的方式真的是大海捞针。 然后在完成了下面的步骤之后,可以通过cat ~/.zshrc.envbackup >> ~/.zshrc 命令写入下面生成的新的.zshrc文件。但是我对于这部分内容没有进行尝试,掉了的环境变量是我手动添加的。

在oh-my-zsh的项目文件夹中,具有一份.zshrc文件模板,现在我们复制这个模板

Terminal window
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

然后再更新环境变量就可以了

Terminal window
source ~/.zshrc

然后你就可以重新开始导入环境变量了

PS:能用就不错了

误操作导致.zshrc文件清空的抢救措施||注意重定义操作符的用法||shell的配置文件坏掉
https://zhaocake.github.io/posts/2024-01-25/
作者
ZhaoCake
发布于
2024-01-25
许可协议
Apache 2.0