1
找出启动时bash正在运行哪些脚本
启动bash终端后,我注意到PATH变量包含重复项。我的终端启动了一个登录shell,因此~/.bash_profile是Source,然后是~/.profile和~/.bashrc。仅在~/.profile其中创建重复的路径条目。 要学究一点,这是应该来源的文件的来源顺序: Sourced /etc/profile Sourced /etc/bash.bashrc Sourced .bash_profile Sourced .profile Sourced .bashrc 在任何人将其标记为“ PATH变量包含重复项”的重复项之前,请继续阅读。 最初,我认为这与~/.profile源两次有关,因此无论何时将文件写入日志文件,都令人惊讶,它仅记录了一个条目,这告诉我它仅源一次。更令人惊讶的是,当我注释掉其中的条目时~/.profile,这些条目仍然出现在PATH变量中。这导致我得出三个结论,其中一个很快就被排除在外: Bash会忽略有效的bash注释,但仍会执行注释的代码 有一个脚本可以读取~/.profile和忽略任何打印输出的代码(例如,日志文件) 我的另一本~/.profile正在其他地方采购 第一个,我很快得出结论,由于进行了一些快速测试,情况并非如此。第二和第三个选项是我需要帮助的地方。 如何在终端启动时收集执行脚本的日志?我echo在检查过的文件中使用过这些文件,以了解它们是否来自bash,但我需要找到一个确定性的方法,该方法可以在终端准备好开始输入时跟踪执行情况。 如果上述方法不可行,那么任何人都可以建议我在哪里可以看到正在运行的脚本。 以后的参考 这是我现在用来添加到我的路径的脚本: function add_to_path() { for path in ${2//:/ }; do if ! [[ "${!1}" =~ "${path%/}" ]]; then # ignore last / new_path="$path:${!1#:}" export "$1"="${new_path%:}" # remove trailing …