gpt4 book ai didi

macos - 查看加载了哪些 Bash 配置文件脚本

转载 作者:行者123 更新时间:2023-11-29 09:27:45 24 4
gpt4 key购买 nike

在 Bash 中有没有办法查看加载了哪些“点文件”,以及它们以什么顺序加载?

我试图权威地找出在 Mac OS X 上加载了哪些 Bash 配置文件,以及它们的加载顺序。

最佳答案

如果没有任何准备工作,我不知道如何在任何给定的 OS X 系统上动态确定它。

但是,准备工作作为一个选项,Etan Reisner 和 twalberg 在他们的评论中提供了有用的选项:

  • 跟踪 bash 的文件创建新外壳时打开 - 见下文。

  • 如果您知道候选文件集,请编辑每个文件并放入类似 echo "Loading file <filename>..." 的内容在顶部。

    • man bash应列出所有候选文件
    • 这种方法的缺点是,除了麻烦之外,您还必须手动扫描这些文件的内容,以查看它们是否加载了其他文件(等等,传递性);例如,标准配置文件中的特定代码 /etc/profile在 OS X 上加载非标准文件 /etc/bashrc ,然后(自 OS X 10.11 起)加载 /etc/bashrc_Apple_Terminal .

跟踪 bash 打开的文件启动时的外壳:

opensnoop 是围绕 dtrace utility 的 shell 脚本包装器OS X 附带的,您可以按如下方式使用:

警告(向4ae1e1 致敬):随着SIP (System Integrity Protection) 的引入在 OS X 10.11 中, opensnoop不再适用于系统位置的可执行文件,例如 /bin/ , /sbin//usr/bin , 其中包括 bash .
DTrace - 因此 opensnoop - 可以在这些位置工作,但前提是您启动到恢复分区,选择 Utilities > Terminal , 并执行
csrutil enable --without dtrace那里;但是请注意,您将收到以下严重警告:csrutil: requesting an unsupported configuration. This is likely to break in the future and leave your machine in an unknown state.
一个实用的解决方法复制/bin/bash到用户特定的位置并从那里执行它 - 见下文。

  • 运行 sudo opensnoop -n bash在现有的终端窗口中。
  • 打开一个新的终端窗口,这将启动另一个 bash实例。
    • OS X 10.11+(SIP 解决方法):
      • 忽略 invalid user access in action ...您最初看到的错误消息。
      • 假设您已经(暂时)复制了您的 bash可执行到 /bin/ 以外的位置, /sbin//usr/bin - 例如~ - 用 ~/bash -l 启动它,它模拟了如何 Terminal.app创建一个新实例(它创建一个交互式登录 shell)。
  • 检查 opensnoop 的输出命令:
    • 幸运的是,它甚至显示不成功 打开文件的尝试 - 由值 -1 表示在FD列,告诉您哪些文件 bash 尝试打开,以什么顺序打开;请注意,在 ~/.bash_profile 的情况下, ~/.bash_login~/.profile三驾马车只打开实际存在的第一个

原始 OS X 10.10 系统的示例输出:

  UID    PID COMM          FD PATH                 
501 5110 bash 3 /dev/dtracehelper
501 5110 bash 3 /dev/tty
501 5110 bash 3 /usr/share/locale/en_US.UTF-8/LC_COLLATE
501 5110 bash 3 /usr/share/locale/en_US.UTF-8/LC_CTYPE
501 5110 bash 3 /usr/share/locale/en_US.UTF-8/LC_MONETARY
501 5110 bash 3 /usr/share/locale/en_US.UTF-8/LC_NUMERIC
501 5110 bash 3 /usr/share/locale/en_US.UTF-8/LC_TIME
501 5110 bash 3 /usr/share/locale/en_US.UTF-8/LC_MESSAGES/LC_MESSAGES
501 5110 bash -1 /etc/.mdns_debug
501 5110 bash 3 /etc/profile
501 5110 bash 3 /etc/bashrc
501 5110 bash -1 /Users/jdoe/.bash_profile
501 5110 bash -1 /Users/jdoe/.bash_login
501 5110 bash -1 /Users/jdoe/.profile
501 5110 bash 3 /Users/jdoe/.bash_history
501 5110 bash 3 /Users/jdoe/.bash_history
501 5110 bash 3 /usr/share/terminfo/78/xterm-256color

关于macos - 查看加载了哪些 Bash 配置文件脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com