从当前 shell 重新生成 .bashrc

从当前 shell 重新生成 .bashrc

所以我愚蠢地无意中破坏了~/.bashrc。如果我打开了带有先前设置的终端,有没有办法将当前设置导出回新的 .bashrc? (我已经set > ~/.bashrc从上述终端之一进行了尝试,取得了一定程度的成功,但想知道是否有更神奇的方法。)

答案1

.bashrc您可以尝试的一件事是从正在运行的 bash 实例的内存中恢复。在 Linux 上,运行以对由 PID 指定的进程进行内存转储。这是否有机会起作用取决于 bash 如何管理其内存;我还没有检查源代码来看看它是否可能。它在 Debian jessie amd64 上对我不起作用。gcore PID

如果这不起作用,您可以保存当前设置,但无法恢复它们的设置方式,因此大量信息将会丢失。如果您的配置取决于机器、终端类型等,那么您只能恢复仍在运行的 bash 实例的设置。

  • 以可读回的形式打印出所有变量。这包括很多你必须解决的噪音。环境变量(标有declare -x不应该在你的中定义.bashrc但无论如何你可能已经这样做了。删除 bash 自动设置的变量(查看手册并查看declare -pin的输出bash --norc)。

    declare -p
    
  • 打印出所有函数。这包括不是由您定义的函数,例如由完成系统定义的函数(您想要的函数. /etc/bash_completion)。

    declare -f
    
  • 打印出别名。这些可能可以按原样使用。

    alias
    
  • 打印出 shell 选项。与shoptin的输出进行比较bash --norc,看看您更改了什么。

    shopt
    
  • 打印出完成设置(如果您使用上下文相关的完成系统)。其中大部分可能来自完成系统;找到你已经调整过的那些可能有点困难。

    complete
    
  • 如果您在您的.bashrc而不是在.inputrc.这包括默认绑定。

    bind -p
    

从现在开始,备份所有文件,并将配置文件置于版本控制之下。

答案2

.bashrc您可以从获取默认值/etc/skel/.bashrc
还有一种方法可以从 恢复某个进程打开的文件/proc/PID/fd/<files>,但事实并非如此,.bashrc因为它不是由 bash 进程永久打开的。

相关内容