Wenn Sie ein Skript aufrufen, das `#! / Usr / bin / env bash` enthält, wird stattdessen bashdb geöffnet

371
ShadSterling

Ich habe das seit Jahren selten und unvorhersehbar gesehen. Heute passierte es auf einem Mac und versuchte, mein Skript auszuführen, das nach MacPorts-Updates sucht, die als Cronjob hätten laufen sollen, aber vermisst zu sein schienen.

bashdbStattdessen wird das Skript an der Bash-Eingabeaufforderung ausgeführt . Das explizite Aufrufen von bash zum Ausführen des Skripts funktioniert wie erwartet. Wenn Sie (mindestens einige) andere Skripts an der Bash-Eingabeaufforderung ausführen, werden die Skripts erwartungsgemäß ausgeführt. Running /usr/bin/env bashöffnet eine neue Instanz von 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

Ich habe seit Jahrzehnten auf meiner Bash Konfiguration Hacking, also gibt es viel zu viel hier in dump, aber bashdbnicht in meinem Bash Startskripts erwähnt ~/bin, aliasoder set/ env/ printenv.

Was hätte ich getan, um dies mit Absicht zu erreichen? Und wie mache ich es rückgängig?

0
Hast du irgendwo "set -x"? DavidPostill vor 6 Jahren 0
Was ist die Zeile "#!" Am Anfang Ihres Skripts? DavidPostill vor 6 Jahren 0
grep findet es nicht in meinen Startskripten oder in ~ / bin. Bei einer schnellen Suche sehe ich keinen Hinweis, dass `set -x`` bashdb` aufrufen sollte. ShadSterling vor 6 Jahren 0
@DavidPostill steht in der Frage ... `#! / Usr / bin / env bash` ShadSterling vor 6 Jahren 0
Hmm. Haben Sie "Alias" geprüft? DavidPostill vor 6 Jahren 0
Mein Bauchgefühl ist, dass bashdb schuld ist. Vielleicht übernimmt es das Parsen von Shebang und so nennt es sich selbst? Kaum zu glauben, dass dies unter Linux passieren würde, da dort Kernel für das Parsing zuständig ist, und es wäre schwer, ihn zu hijacken, aber ich weiß nicht, wie das auf Mac funktioniert, vielleicht ist dies aus dem Benutzerraum möglich. wvxvw vor 6 Jahren 0
@DavidPostill Worauf sollte ich in `Alias` achten? "Bashdb" wird nicht erwähnt. ShadSterling vor 6 Jahren 0
Ich bin auf einem Mac mit derselben Betriebssystemversion wie Sie und alle meine Bash-Skripts laufen gut mit dieser Zeile an der Spitze des Skripts: `#! / Bin / bash` JakeGould vor 6 Jahren 0
@JakeGould Ich habe zuletzt überprüft, ob Apple Bash stark veraltet ist. Ich benutze MacPorts Bash (`/ opt / local / bin / bash`), aber ich möchte, dass meine Skripte portierbar sind, also benutze ich 'env'. Ich kenne viele mögliche Problemumgehungen, aber die Frage ist, warum der tragbare Weg nicht funktioniert. ShadSterling vor 6 Jahren 0
@Polyergic Nicht dicht sein, aber was ist mit `#! / Opt / local / bin / bash`? Ich gehe davon aus, dass das funktioniert, aber Sie versuchen in der Struktur tragbarer zu sein, richtig? Also die "env" -Methode? JakeGould vor 6 Jahren 0

0 Antworten auf die Frage