如何将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
您可以将HISTFILE
shell 变量设置~/.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 更新定期重复此过程......