【问题标题】:undoing changes to bashrc from terminal从终端撤消对 bashrc 的更改
【发布时间】:2013-05-17 17:49:22
【问题描述】:

不幸的是,我刚刚用

覆盖了我的.bashrc

echo "command" > ~/.bashrc

而不是通过

追加

echo "command" >> ~/.bashrc

不是一个巨大的倒退,因为我是在终端工作的新手。 我想知道是否可以在我重新启动终端会话之前恢复我的.bashrc

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

期待最坏的消息,期待最好的消息!我正在运行一个 Ubuntu 13.04 机器并且会话在 Guake 终端中 - 如果这改变了一切的话。

【问题讨论】:

  • git revert .bashrc 现在可能无济于事,但我希望这会教你,以便下次发生这种情况时它会起作用。
  • 绝对在这里吸取了教训!感谢您的意见!
  • :( 发生在我身上

标签: bash ubuntu terminal


【解决方案1】:

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

在终端中输入以下内容,

/bin/cp /etc/skel/.bashrc ~/

它将替换你损坏的 ~/.bashrc 一个新鲜的。之后,您需要获取 ~/.bashrc 以便 更改立即发生,在终端中写入,

来源 ~/.bashrc

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

【讨论】:

    【解决方案2】:

    无法恢复。

    我建议您在终端中输入env 以查看最重要的环境变量(如 LD_LIBRARY_PATH、PATH、PYTHONPATH、CLASS_PATH、JAVA_HOME 等等...)并将它们添加回新的 .bashrc 文件.

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

    【讨论】:

      【解决方案3】:

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

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

      如果您运行history,您应该能够检索以前的命令。如需更多信息,请参阅man history

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

      【讨论】:

      • 我认为他正在寻找恢复 .bashrc 的内容,而不是找到他从终端运行的命令列表。
      • @chepner 听起来他只是通过在echo 后面附加东西来构建他的.bashrc
      • -1 history 不包含以前在您的.bashrc 中的命令。
      • @tripleee 我没说。
      【解决方案4】:

      将来您可能会考虑使用版本控制系统,例如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"
      

      【讨论】:

      • 非常有用!从现在开始我一定会这样做
      【解决方案5】:

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

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

      【讨论】:

      • 就是这样!非常感谢。要解析的内容很多,但这正是我想要的。
      猜你喜欢
      • 2010-09-26
      • 2015-10-17
      • 2021-05-20
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      相关资源
      最近更新 更多