xterm -e 'sudo iotop -aP'
工作
urxvt -e 'sudo iotop -aP'
不工作
top
命令对两者都有效
知道发生了什么吗?
如何让它发挥作用?
答案1
它可以在 xterm 中工作,因为 xterm 多次尝试执行给定的命令或通过execvp 调用。在第一种情况下,将后面的所有标记-e
视为单个字符串,在后一种情况下,标记必须是分开(对于 execvp 调用)。这是它的接口的副作用luit
,这可能不是很明显手册页提及:
当使用区域设置过滤器时,例如,使用
-e
选项或外壳,xterm首先尝试通过该过滤器传递控制权。如果失败了,xterm将在没有区域设置过滤器的情况下重试。 Xterm 在重试之前警告失败。
但看着源代码会让它更清楚(command_to_exec
是用于的字符串数组-e
选项, 尽管command_to_exec_with_luit
是第一次尝试的组合命令字符串xterm)。
大多数终端模拟器不这样做。
答案2
删除引号有效
urxvt -e sudo iotop -aP