我的团队共享一个 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 。--posix
set -o posix
POSIX 模式所做的众多事情之一(除了不允许您覆盖source
)是如果-lookup 失败,则 make source
(和.
)不搜索当前工作目录。$PATH
这与在 Cygwin 上运行无关。