【问题标题】:How do I debug where files break in a sourceing of files via wild card in zsh如何通过 zsh 中的通配符调试文件在文件源中中断的位置
【发布时间】:2021-11-23 14:19:55
【问题描述】:

我的 .zshrc 文件中有一行 source $SNIPPETS/*.zsh,我知道它可以部分工作,因为目录中定义的一些函数可以工作,但其他函数则不能,除非我专门专门提供该文件。

我将采取哪些步骤来查找采购中存在提前退出或中断的位置?

【问题讨论】:

    标签: shell zsh zshrc


    【解决方案1】:

    您一次只能source 一个文件。正在获取第一个文件,但不是其余的。

    您需要在.zshrc 中使用循环

    for i in "$SNIPPETS"/*.zsh; do
        [[ -e "$i" ]] && source "$i"
    done
    

    【讨论】:

    • 今天我学到了!
    【解决方案2】:

    今天我了解到:source 仅适用于显式调用的文件。可以输入多个文件,但不能输入通配符。

    我的文件都没有损坏。

    我为调试采取的步骤:

    1. 启动了一个新的 shell。
    2. 启用zprof。 (zmodload zsh/zprof)
    3. 运行源代码行。 source $SNIPPETS/*.zsh
    4. 意识到只有一个文件被获取。
    5. 重新调整我对“zsh 源通配符”的搜索范围
    6. 从这个答案 (https://stackoverflow.com/a/14680403/5724147) 中找到并实施了选项一。

    【讨论】:

    • 其实你可以使用source几个参数;只是剩下的参数变成了位置参数。因此,如果列表中的第一个文件是实际获取的文件,则将第二个文件分配给参数 $1,将第三个文件分配给参数 $2,依此类推。阅读 man zshbuiltins,它解释了这一点。
    • @user1934428 谢谢,我根据这个更新了我的答案!
    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多