如何在 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 上運行無關。

相關內容