【发布时间】:2018-09-25 13:45:19
【问题描述】:
我正在迁移一个刚刚使用 sh 到 bash 的脚本,该脚本最初看起来像这样:
#!/bin/sh
... a bunch of setup ...
exec "$@"
当我通过以下方式运行脚本时:
./my_script kill -l
我得到一个可用信号列表:
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
但是,我想使用 bash 信号名称,所以我想我可以简单地:
#!/bin/bash
exec bash -l "$@"
现在的问题是kill不被识别:
/bin/kill: /bin/kill: cannot execute binary file
真的,我的脚本只是另一个进程的包装,我需要确保可以向它发送kill -SIGTERM 的信号。
【问题讨论】:
-
不确定是否发现问题。当我创建一个只有 bash 的 shebang 和唯一行的脚本时: exec "$@"...../my_script kill -l 工作得很好,我得到了预期的输出。