我可以在不修改源代码的情况下跟踪 dash 脚本吗?

我可以在不修改源代码的情况下跟踪 dash 脚本吗?

我想跟踪 shell 脚本以进行调试,而无需修改其源代码(例如更改 shebang 或set -x在开头插入 a )。它是一个 dpkg postinst 脚本,所以实际上不是我自己在 shell 上调用的。

为了找到为此的环境变量,我在手册页中搜索了dash,但找不到任何内容。

有什么方法可以做到这一点吗?

答案1

由于您拥有超级用户访问权限,因此您只需更改/bin/sh.当然,您会影响任何想要使用默认 shell 的内容(例如 cron 脚本),因此请尝试尽快恢复它。

首先,创建包装器。在您的主目录中创建一个mysh以此内容命名的文件:

#!/bin/dash
exec /bin/dash -x "$@"

使其可执行。

$ chmod +x ~/mysh

然后改变/bin/sh。首先,请务必记下它指向的位置

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 Jan 12 17:42 /bin/sh -> /bin/dash

然后,肆无忌惮地改变它。 (警告:当您的系统没有 时,将会有一小部分微秒/bin/sh。)

$ sudo ln -sf ~/mysh /bin/sh

一旦你完成了你的事情,就恢复它。

$ sudo ln -sf /bin/dash /bin/sh

祝你好运!

答案2

您可以-x在调用命令本身中使用该标志:

sh -x ./script

相关内容