Иногда при вызове скрипта с `#! / Usr / bin / env bash` открывается bashdb

343
ShadSterling

Я видел это нечасто и непредсказуемо в течение многих лет. Сегодня это произошло на Mac, пытаясь запустить мой сценарий, который проверяет наличие обновлений MacPorts, которые должны были работать как cronjob, но, похоже, были пропущены.

Запускается скрипт в приглашении Bash bashdb. Явный вызов bash для запуска скрипта работает как положено. Запуск (хотя бы некоторых) других сценариев в командной строке bash запускает сценарии, как и ожидалось. Запуск /usr/bin/env bashоткрывает новый экземпляр bash.

  • macOS High Sierra 10.13.1 (17B48)
  • MacPorts 2.4.2
  • MacPorts Bash @ 4.4.12_0
  • MacPorts bashdb @ 4.4-0.94_0

Я хакерство на моей конфигурации Баш на протяжении десятилетий, так что есть слишком много, чтобы сбросить здесь, но bashdbне упоминается в моем сценарии запуска Баш, ~/bin, aliasили set/ env/ printenv.

Что бы я сделал, чтобы это произошло специально? И как мне отменить это?

0
У вас есть где-нибудь `set -x`? DavidPostill 6 лет назад 0
Какая строка `#!` В начале вашего скрипта? DavidPostill 6 лет назад 0
grep не находит его ни в моих скриптах запуска, ни в ~ / bin. Из быстрого поиска я не вижу никаких признаков того, что `set -x` должен вызывать` bashdb`. ShadSterling 6 лет назад 0
@DavidPostill это вопрос ... `#! / Usr / bin / env bash` ShadSterling 6 лет назад 0
Хм. Вы проверяли "псевдоним"? DavidPostill 6 лет назад 0
Мне кажется, что виноват `bashdb`. Возможно, он угоняет разбор Шебанга, и так он себя называет? Трудно поверить, что это произойдет в Linux, так как там ядро ​​отвечает за синтаксический анализ, и было бы трудно его взломать, но я не знаю, как это работает на Mac, может быть, это возможно из пользовательского пространства. wvxvw 6 лет назад 0
@DavidPostill, что я должен проверить в `alias`? Там нет упоминания о `bashdb`. ShadSterling 6 лет назад 0
Я нахожусь на Mac с той же версией ОС, что и у вас, и все мои скрипты Bash работают нормально с этой строкой в ​​начале скрипта: `#! / Bin / bash` JakeGould 6 лет назад 0
@JakeGould в последний раз я проверял, что Apple bash сильно устарела, поэтому я использую MacPorts bash (`/ opt / local / bin / bash`), но я хочу, чтобы мои сценарии были переносимыми, поэтому я использую` env`. Я знаю о многих возможных обходных путях, но вопрос в том, почему не работает переносной способ? ShadSterling 6 лет назад 0
@Polyergic Не плотно, но как насчет использования `#! / Opt / local / bin / bash`? Я предполагаю, что это работает, но вы пытаетесь быть более переносимым по структуре, правильно? Таким образом, метод env? JakeGould 6 лет назад 0

0 ответов на вопрос