.bashrc被覆盖,但仍是源文件—如何恢复它?


19

通常,当我找到要别名的命令时,便将其回显到.bashrc中,如下所示:

[up button pressed to last command, then line edited so that it reads]
$echo "command-i-just-did" >> ~/.bashrc

可能有更好的方法来执行此操作。但是无论如何,刚才我只使用了一个人字形覆盖了整个.rc文件。但是,由于.bashrc仍是当前版本,它仍然接受我的旧别名(当然,现在是这样)。那么有没有办法恢复呢?


6
echo "set -o noclobber" > ~/.bashrc(请记住添加第二个尖括号)
hhaamu 2011年


1
为了将来:备份文件,所以这不是问题。您可能还考虑为这些快速加载项创建一个单独的文件,然后在.bashrc之类的地方进行采购。提供基本的安全网,您可以根据需要轻松打开和关闭它。

2
您可以保存当前设置,但是如果其中包含依赖于本地变量(例如主机,用户等)的.bashrc任何逻辑,则可能无法恢复。真正的答案是从最新备份中还原。您最近有备份吗?
jw013

Answers:


22
  • alias 不带参数的输出当前定义的别名的定义。
  • declare -f 输出当前定义的函数的定义。
  • export -p 输出当前定义的变量的定义。

所有这些命令的输出定义都准备好可以重用,您可以将其输出直接重定向到new ~/.bashrc

所有列表将包含许多在其他地方定义的元素,例如/etc/profile/etc/bash_completion。因此,您将必须手动清理列表。


3
我也建议从.bashrc系统的默认值开始。在Debian中/etc/skel,您可以使用,也可以创建一个新用户来获得全新的.bashrc
enzotib

1
setdeclare(不带参数)一次显示所有这些。
rozcietrzewiacz

@enzotib,好主意。我确实想知道默认的.bashrc将驻留在哪里...
ixtmixilix

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.