7

不幸的是,我只是.bashrc

echo "command" > ~/.bashrc

而不是通过附加

echo "command" >> ~/.bashrc.

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

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

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

4

5 回答 5

4

你无法完全康复。但是您可以使用set.

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

于 2013-05-22T15:40:49.477 回答
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"
于 2013-05-22T15:45:11.120 回答
2

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

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

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

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

于 2013-05-22T15:32:52.607 回答
2

无法恢复。

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

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

于 2018-09-12T13:33:05.810 回答
0

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

在终端中输入以下内容,

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

它将用新的 ~/.bashrc 替换您损坏的 ~/.bashrc。之后,您需要获取 ~/.bashrc 以便立即进行更改,在终端中写入,

源〜/ .bashrc

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

于 2020-11-19T06:41:49.220 回答