Jedes Mal, wenn ich versuche, etwas in GDB zu laufen, ich mit der folgenden Fehlermeldung erfüllt bin:GDB hält meine SHELL auf die aktuellen ausführbare Zurücksetzen
Error: No such file or directory
During startup program exited with code 127.
Suche um auf hier, fand ich heraus, dass dies auftreten kann Wenn die SHELL-Variable nicht richtig gesetzt ist, löst und in der Tat export SHELL=/bin/bash --login
vor dem Ausführen von GDB das Problem für die aktuelle Sitzung.
Dies ist jedoch trotz der Tatsache, echo $SHELL
spuckt den gewünschten Wert bereits aus. Wenn ich auf Befehl näher betrachten GDB auszuführen versucht, in der Regel sie die Form annimmt:
/path/to/mybin -c exec /path/to/mybin --my --opts
statt
$SHELL -c exec /path/to/mybin --my --opts
Das heißt, irgendwie GDB setzt SHELL um zu zeigen, was auch immer ausführbare ich vorbei es bevor es zu laufen beginnt. (Ich verwende das Format gdb --args /path/to/mybin --my --opts
, um GDB zu starten.) Vor und nach dem Lauf hat SHELL den richtigen Wert. Wenn ich versuche, drei verschiedene ausführbare Dateien hintereinander zu debuggen, wird jede dieser drei ausführbaren Dateien als eigene Shell verwendet, was offensichtlich zu Fehlern führt. Wenn ich einmal einmal export SHELL=(acceptable shell)
ausführen, wird es für den Rest der Sitzung ordnungsgemäß funktionieren.
Keine meiner Shell-dotfiles (. Bashrc,. Profil, usw.) machen keine Referenz oder Änderung der SHELL-Variable. Dieses Verhalten erscheint mir völlig unverständlich. Hat jemand eine Idee, was da vor sich geht?
Ich benutze gdb-7.7.1 in bash-4.3.11 auf Ubuntu 14.04.
EDIT: Ich war falsch über ein wichtiges Detail. Running export SHELL=/bin/bash --login
korrigiert es tatsächlich nicht. Das gleiche Problem bleibt bestehen, wenn ich das tue. (Dies ist auch der Standardwert in meinem Shell und was ich sehe, wenn ich show env SHELL
eingeben, wenn gdb
nicht funktioniert. Allerdings export SHELL=/bin/bash
Einstellung macht das Problem zu beheben, so dass der Login-Shell ist irgendwie das Problem, denke ich.
Wenn die Dinge nicht richtig funktionieren, was zeigt '(gdb) env SHELL'? –
Ich habe gerade meine ursprüngliche Frage bearbeitet. 'show env SHELL' druckt'/bin/bash --login' – xanderflood