是否有与 bash 等效的 ZDOTDIR?

是否有与 bash 等效的 ZDOTDIR?

有没有办法将 ~/.bashrc 移动到其他地方而不在 ~/ 中留下任何痕迹(没有符号链接等)?就像 Zsh 对环境变量 ZDOTDIR 所做的那样?

这个只提供我不想要的东西。这--rcfile仅适用于通过终端提示符初始化新的 shell,它不适用于通过新的终端模拟器启动(如果是窗口管理器,则为窗口)。

答案1

有没有ZDOTDIR相当于 bash 的东西?

不,没有直接的等价物。

有没有办法移动~/.bashrc到其他地方而不留下任何痕迹(没有符号链接等)~/

是的,您可以通过更改HOME环境变量来做到这一点:

$ echo echo LOL >/tmp/.bashrc
$ HOME=/tmp bash
LOL
$

为一个非交互式shell,你可以使用BASH_ENV环境变量(1):

$ BASH_ENV=/tmp/.bashrc bash -c true
LOL

或者做

--rcfile仅适用于通过终端提示符初始化新的 shell,它不起作用,比如通过新的终端模拟器启动

这不是真的。大多数(全部?)终端模拟器允许您选择要运行的命令和参数,而不是默认的 shell。


(1)尽管 bash 手册页中的声明令人困惑,但BASH_ENV它与 bash 在 POSIX 模式下运行时的来源不同ENV,因为前者由非交互式贝壳,但后者由交互的贝壳。无论如何,两者都可以进行命令扩展,因此可以使用它们直接执行命令:

$ BASH_ENV='$(echo WTF >/dev/tty)' bash -c true
WTF
$ ENV='$(echo WTF >/dev/tty)' bash --posix -ic true
WTF

相关内容