小编leg*_*s2k的帖子

为什么 man 会抱怨 .profile 中定义的函数?

我使用 Bash 5.1.8。运行man显示手册页,但有以下错误

man ps

sh: bat: line 10: syntax error near unexpected token `('
sh: bat: line 10: ` *.?(ba)sh)'
sh: error importing function definition for `bat'
Run Code Online (Sandbox Code Playgroud)

我认为某些 shell ( sh) 发现 Bashisms 令人讨厌。如果我从以下内容中删除 Bash-isms,这些错误就会消失~/.bashrc

    function bat {
        # lines snipped for brevity

        case "$f" in
            *.rs      ) opt_syntax="--syntax=rust";;
            *.?(ba)sh ) opt_syntax="--syntax=shellscript";;
            *.?(m)m   ) opt_syntax="--syntax=objc";;
        esac

        # lines snipped for brevity
    }
    export -f bat
Run Code Online (Sandbox Code Playgroud)

我确信.bashrc它本身没有问题,因为在 Bash 启动时我没有看到任何错误或警告。进一步调试我注意到.profile采购.bashrc

# …
Run Code Online (Sandbox Code Playgroud)

bash man profile

7
推荐指数
2
解决办法
1145
查看次数

Bash 参数扩展“替换”与“分配”

我正在研究使用${parameter:-word}vs 的参数扩展${parameter:=word}

这是一些相关文档

${parameter:-word}如果参数未设置或为空,则替换单词的扩展。

${parameter:=word}如果参数未设置或为空,则将单词的扩展分配给参数。然后替换参数的值。

当然,关键的区别在于每个描述的第一句,替换与分配。

但实际上,我不知道当某事是时substituted与当某事是时会发生什么assigned

最后,什么时候使用其中一种比较合适?

bash

3
推荐指数
1
解决办法
819
查看次数

标签 统计

bash ×2

man ×1

profile ×1