
私のチームはシェル スクリプトを共有しています。Windows を使用しているのは私だけなので、これを Cygwin 互換にしたいと考えています。問題は にありますsource
。私のシェルは次のような形式のみを受け入れます。
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) の場合、bash を POSIX モードで実行しているようです。これは、 を$POSIXLY_CORRECT
設定し、 でシェルを実行し--posix
、 を使用したことset -o posix
などが原因である可能性があります。
POSIX モードが行う多くのことの 1 つは ( を上書きできないことに加えてsource
)、-lookup が失敗した場合にsource
(および.
) 現在の作業ディレクトリを検索しないようにすることです。$PATH
これは Cygwin 上での実行とは関係ありません。