Как переопределить источник в скрипте оболочки Linux?

Как переопределить источник в скрипте оболочки Linux?

Моя команда делится скриптом оболочки, я хочу сделать его совместимым с 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.

Связанный контент