从 shell 脚本运行二进制文件会创建核心吗?

从 shell 脚本运行二进制文件会创建核心吗?

当我从 shell 运行可执行文件(二进制程序)时,我遇到了一个问题,它运行正常。但是当我从 shell 脚本运行该可执行文件时,该可执行文件会创建核心转储。例如:如果我从提示符运行 TEST 可执行文件,并使用以下参数:

TEST ARGS

它运行良好。但是现在,我创建一个脚本a.ksh

#/bin/ksh
cd PATH_TO_EXECUTABLE
Result=Test ARGS

然后运行./a.ksh,崩溃并创建核心转储。有没有想过为什么从 shell 脚本运行二进制文件会创建核心?

答案1

在 shell 中执行此操作:

$ RESULT=binary args

将使 shell 尝试在变量设置为值的args环境中执行。这不是您想要的结果。RESULTbinary

除此之外:从控制台 shell 执行二进制文件和从该控制台 shell 调用的 shell 脚本之间的唯一区别在于环境变量的值。

导致二进制文件崩溃的原因可能是多种多样的,但最有可能的是 PATH 或 LD_LIBRARY_PATH 设置存在差异。请确保export从控制台 shell 中设置这些设置,或者在脚本中明确设置它们。

相关内容