Эта ошибка возникает, когда bash
, маскируясь под оболочку POSIX, пытается импортировать эти функции из среды, а не при их загрузке путем интерпретации файла, подобного ~/.bashrc
или подобного. Упрощенный пример:
foo.bar(){ true; }; export -f foo.bar; bash --posix -c true
bash: error importing function definition for `foo.bar'
Я ожидал, что bash
не будут загружаться функции из среды в режиме posix, но это происходит и ругается только тогда, когда их имена содержат забавные символы.
Обратите внимание, что bash
также будет работать в режиме posix, если установлена переменная окружения POSIXLY_CORRECT
или POSIX_PEDANTIC
или если он был скомпилирован с --enable-strict-posix-default
/ STRICT_POSIX
.
Это последнее относится к /bin/sh
в MacOS (см. здесь для PRODUCT_NAME = sh
), где я ожидаю, что эта ошибка также будет возникать при использовании библиотечных функций, таких как popen(3)
или system(3)
.