如何获取 bash 来源的所有文件的列表?

hrs*_*hrs 5 bash shell

有没有办法找出所有由 bash 提供的文件?

或者,是否有一个单一的入口点(或第一个入口点),我可以通过set -x在顶部添加一个来跟踪和查找此信息?

(通过单点入口,我的意思不是 ~/.bashrc 或 ~/.bash_profile 因为源链中更高的一些其他文件告诉 bash 首先加载上述这些文件)。

Shl*_*oim 20

重新提出这个问题是因为有一个自动化的解决方案:

执行 bash 并将其从输出中提取出来。-li是交互式登录,-x打印出 bash 内部正在做什么,并-c exit告诉 bash 立即终止。用于sed过滤掉source命令或.别名。

/bin/bash -lixc exit 2>&1 | sed -n 's/^+* \(source\|\.\) //p'
Run Code Online (Sandbox Code Playgroud)


Mat*_*vid 6

这里没有简单的包罗万象的答案,这取决于登录/交互属性的组合。

登录 shell 将获取源/etc/profile,并且只有它在~/.bash_profile~/.bash_login、 和 中找到的第一个~/.profile。您可以将这些独立的切入点称为:/etc/profile不需要明确地获取其他切入点之一,bash就是这样。

对于非登录交互,您有/etc/bash.bashrc~/.bashrc,再次独立。

对于非登录非交互式$BASH_ENV,如果已定义,则单入口点为。

您可以在 GNU Bash 手册中的Bash 启动文件下找到官方说明。