当我从 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
环境中执行。这不是您想要的结果。RESULT
binary
除此之外:从控制台 shell 执行二进制文件和从该控制台 shell 调用的 shell 脚本之间的唯一区别在于环境变量的值。
导致二进制文件崩溃的原因可能是多种多样的,但最有可能的是 PATH 或 LD_LIBRARY_PATH 设置存在差异。请确保export
从控制台 shell 中设置这些设置,或者在脚本中明确设置它们。