如何在 Linux shell 脚本中覆盖源代码?

如何在 Linux shell 脚本中覆盖源代码?

我的团队共享一个 shell 脚本,我想让它与 Cygwin 兼容,因为只有我在 Windows 上。现在问题来自source.我的 shell 只接受如下格式:

source ./<file name>

代替

source <file name>

这已经在脚本中了。所以我想重写source如下:

source(){ . ./$@; }

但现在我的外壳抱怨说:

`source': is a special builtin

我现在该怎么办?

答案1

从关于特殊内置的错误消息(参见http://sources.debian.net/src/bash/4.4-4/execute_cmd.c/?hl=5623#L5623),看来您正在 POSIX 模式下运行 bash。这可能是因为您已使用、 使用等$POSIXLY_CORRECT设置、运行 shell 。--posixset -o posix

POSIX 模式所做的众多事情之一(除了不允许您覆盖source)是如果-lookup 失败,则 make source(和.)不搜索当前工作目录。$PATH

这与在 Cygwin 上运行无关。

相关内容