将 bash 运行时文件重新定位到任意目录

将 bash 运行时文件重新定位到任意目录

如何将bash运行时文件(~/.bash_history~/.bashrc等)重新定位到定义的目录(例如~/.config/bash~/.cache/bashhistory等)?

答案1

我认为您可以创建指向自定义文件的符号链接

ln -s ~/.config/bash ~/.bashrc
ln -s ~/.cache/bashhistory ~/.bash_history

或者

对于历史文件,您可以设置 shell 变量

HISTFILE=~/.cache/bashhistory

或者您可以使用以下命令启动 bash:

bash --rcfile ~/.config/bash

答案2

没有单一的配置选项可以使 Bash 使用给定目录中的配置文件。您可以使用--rcfile将 Bash 指向给定值.bashrc,如下所述man bash

   --rcfile file
          Execute commands from file instead of the standard
          personal initialization file ~/.bashrc if the shell is
          interactive (see INVOCATION below).

例如:

bash --rcfile ~/.config/bash

您可以将HISTFILEshell 变量设置~/.cache/bashhistory~/.config/bash

HISTFILE=~/.cache/bashhistory

如果有其他配置文件,您始终可以在 ~/.config 中创建指向给定文件的符号链接,例如为了能够编辑 ~/.config/profile 而不是~/.profile

ln -s ~/.profile ~/.config/profile

作为最后的手段,您还可以设置$HOME并将~/.config所有名称未更改的配置文件放入 ~/.config 中,然后像这样启动 bash:

$ echo HOME_CHANGED=1 >> ~/.config/.bashrc
$ HOME=~/.config bash
$ echo $HOME_CHANGED
1

(请注意,$这里有一个命令行提示符 用于指示新行的开始,而不是命令的一部分)。

答案3

如果您不想使用链接,则必须从源代码重建 bash,修补 shell.c 中 ~/.bashrc ~/.bash_profile 的默认路径。

主要缺点:您必须根据 bash 更新定期重复此过程......

相关内容