为什么 GDB 启动一个新的 shell 以及如何禁用此行为?

2024-05-10

我正在解决一个问题,即从 GDB 启动应用程序会导致符号查找错误,但从 shell 启动它却可以。

事实证明,每当你从 GDB 中启动一个程序时,它都会启动一个新的 shell,从而覆盖我在启动 GDB 之前设置的所有环境变量(例如LD_LIBRARY_PATH).

这并不是我真正想要的行为。有人可以解释一下这背后的理由,或者告诉我如何关闭它吗?


我猜你无条件地 set LD_LIBRARY_PATH在你的~/.cshrc或类似的。因此,如果从 shell 提示符处执行以下操作:

export LD_LIBRARY_PATH=foo  # or for csh:
setenv LD_LIBRARY_PATH foo
$SHELL -c 'echo $LD_LIBRARY_PATH'

结果是除了foo。不要这样做that.

通常这种情况发生在 CSH 用户身上,他们忽视了保护自己的安全~/.cshrc针对非交互式 shell。这也可能发生在 BASH 用户身上,因为他们设置了BASH_ENV.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 GDB 启动一个新的 shell 以及如何禁用此行为? 的相关文章

随机推荐