
Mein Team verwendet ein Shell-Skript, ich möchte es Cygwin-kompatibel machen, da nur ich Windows verwende. Das Problem kommt jetzt von source
. Meine Shell akzeptiert nur Formate wie:
source ./<file name>
anstatt
source <file name>
das steht bereits im Skript. Ich möchte es also source
wie folgt überschreiben:
source(){ . ./$@; }
Aber jetzt beschwert sich meine Shell darüber:
`source': is a special builtin
Was soll ich jetzt tun?
Antwort1
Aus dieser Fehlermeldung über ein spezielles Builtin (siehehttp://sources.debian.net/src/bash/4.4-4/execute_cmd.c/?hl=5623#L5623), scheint es, als würden Sie Bash im POSIX-Modus ausführen. Dies kann daran liegen, dass Sie $POSIXLY_CORRECT
festgelegt haben, die Shell mit ausgeführt haben --posix
, verwendet haben set -o posix
usw.
Eine der vielen Funktionen des POSIX-Modus (zusätzlich dazu, dass Sie nicht überschreiben können source
) besteht darin, dass er dafür sorgt, dass source
(und .
) das aktuelle Arbeitsverzeichnis nicht durchsucht wird, wenn $PATH
-lookup fehlschlägt.
Dies hat nichts mit der Ausführung unter Cygwin zu tun.