
Моя команда делится скриптом оболочки, я хочу сделать его совместимым с Cygwin, потому что только я работаю на Windows. Теперь проблема в 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 (помимо того, что он не позволяет вам переопределять source
) — это то, что он заставляет source
(и .
) не выполнять поиск в текущем рабочем каталоге, если $PATH
-lookup завершается неудачей.
Это не имеет никакого отношения к работе на Cygwin.