Chr*_*urm 5 shell dash shell-script
我想跟踪一个 shell 脚本以进行调试,而不必修改其源代码(例如,更改 shebang 或set -x
在开头插入 a )。它是一个 dpkg postinst 脚本,所以实际上并不是我自己在 shell 上调用的。
希望为此找到一个环境变量,我在手册页中搜索了dash
,但找不到任何内容。
有没有办法做到这一点?
由于您拥有超级用户访问权限,因此您只需更改/bin/sh
. 当然,您会影响任何想要使用默认 shell 的内容(例如 cron 脚本),因此请尝试尽快恢复它。
首先,创建包装器。mysh
在您的主目录中创建一个以此内容命名的文件:
#!/bin/dash
exec /bin/dash -x "$@"
Run Code Online (Sandbox Code Playgroud)
使其可执行。
$ chmod +x ~/mysh
Run Code Online (Sandbox Code Playgroud)
然后改变/bin/sh
。首先,请务必记下它指向的位置
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 Jan 12 17:42 /bin/sh -> /bin/dash
Run Code Online (Sandbox Code Playgroud)
然后,肆无忌惮地改变它。(警告:当您的系统没有 时,将会有一小部分微秒/bin/sh
。)
$ sudo ln -sf ~/mysh /bin/sh
Run Code Online (Sandbox Code Playgroud)
一旦你完成了你的事情,就恢复它。
$ sudo ln -sf /bin/dash /bin/sh
Run Code Online (Sandbox Code Playgroud)
祝你好运!