撤消对终端的bashrc的更改

时间:2013-05-22 15:28:45

标签: bash ubuntu terminal

不幸的是,我只是用

覆盖了我的.bashrc
  

echo "command" > ~/.bashrc

而不是通过

追加
  

echo "command" >> ~/.bashrc

因为我在终端工作比较新,所以不是一个巨大的回归。 但我很喜欢如果可以在重新启动终端会话之前恢复.bashrc

是否存在会话命令的存储位置?如果是这样 - 我如何提取自定义脚本?

期待最糟糕的新闻,希望获得最好的新闻!我正在运行一个Ubuntu 13.04盒子,会话在Guake终端 - 如果这改变了一切。

5 个答案:

答案 0 :(得分:3)

你无法完全康复。但您可以使用set部分恢复。

如果您在同一终端上运行set,您将能够获得自定义脚本和其他环境变量集的完整列表。在这方面,它可以区分.bashrc的一部分以及在该终端上键入的其他部分。但是你无法恢复以前作为bash登录一部分执行的命令。

答案 1 :(得分:3)

将来您可以考虑使用githg等版本控制系统来保存以前版本的文件,例如~/.bashrc。然后,如果您将来碰巧执行>而不是>>,那么您应该能够将文件恢复到上次将其提交到版本控制时的位置。

如何为git设置此内容的示例如下:

cd ~
git init
git add ~/.bashrc
git commit -m "Added .bashrc to version control"
# Time goes by...
echo "export FOO=bar" >> ~/.bashrc # Added a new line
git commit -am "Added FOO to .bashrc"
# Time goes by...
echo "export SHEEP=lambs" > ~/.bashrc # Eeek! We've overwritten our file
# Version control to the rescue
git checkout ~/.bashrc # file is restored
echo "export SHEEP=lambs" >> ~/.bashrc # Done correctly this time!
git commit -am "Added SHEEP to .bashrc"

答案 2 :(得分:1)

假设您使用一堆类似的.bashrc命令构建了echo,并且只想检索它们:

  

是否存在会话命令的存储位置?

如果您运行history,您应该能够检索以前的命令。有关详细信息,请参阅man history

在您的情况下,您可能会发现history | grep bashrc的输出很有用。

答案 3 :(得分:1)

无法恢复。

我建议您在终端中键入env来查看最重要的环境变量(例如LD_LIBRARY_PATH,PATH,PYTHONPATH,CLASS_PATH,JAVA_HOME等),然后将其添加回新的。 bashrc文件。

您可以从/etc/skel/.bashrc的副本开始作为最小文件。

答案 4 :(得分:0)

在另一个对我有帮助的帖子中共享指向答案的链接。 https://stackoverflow.com/a/40214165/13151296 如果您仅对bashrc添加了一些修饰,则可以使用它来获取全新的默认bashrc,然后使用该线程先前的答案中的方法添加所需的内容。

在终端中输入以下内容,

/ bin / cp /etc/skel/.bashrc〜/

它将替换损坏的〜/ .bashrc 用新鲜的。之后,您需要来源〜/ .bashrc,以便 更改立即发生,在终端中写入

源〜/ .bashrc

或者如果这样不起作用,您可以关闭终端 并再次打开。