
我的團隊共用一個 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 上運行無關。