Диагностика 'sh: 1: Bad Substitution' из / bin / sh -exc

Я пытался скомпилировать некоторые пакеты ocaml и продолжаю сталкиваться с ошибками вида sh: 1: Bad substitution (код выхода 2), например.

/bin/sh -exc echo | m4
/bin/sh: 1: Bad substitution

Но, /bin/sh -ec echo | m4 не имеет ошибки. Кажется, что любая команда с флагами -e и -x, переданными в /bin/sh (/ bin / sh: символическая ссылка на тире), приводит к этой ошибке. Это ожидаемое поведение, потому что я не вижу ничего подобного в руководстве, и я не могу вспомнить, чтобы это когда-либо происходило раньше.

РЕДАКТИРОВАТЬ: на самом деле я вижу ошибку с любой командой /bin/sh -xc, независимо от -e

Ubuntu 18.04

1
задан 4 September 2019 в 04:55

1 ответ

Я наконец нашел проблему. В моем ~/.bashrc я установил

export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'

Который, как в руководстве тире говорится, производится перед каждой соединительной линией когда -x установлен. Экспорт PS4 без bashisms решает проблему.

Я не ожидал мой ~/.bashrc быть считанным вообще в этом случае, но с тех пор bash используется для выполнения /bin/sh Я предполагаю, что те переменные замечаются dash также, раздражающе.

1
ответ дан 7 December 2019 в 14:59

Другие вопросы по тегам:

Похожие вопросы: