一段时间以来,我一直在为这个问题挠头。它看起来很简单,但我就是无法让它工作。这是在一个有根的 android 平板电脑上,如果这有所作为的话。我试图模仿 sudo 在普通 linux 系统上的行为。在 bash 脚本方面我不是很有经验,所以这可能很简单。这是一个两部分的问题。
所以这里(部分)是一个名为 aliases 的 bash 脚本。它通常由 bashrc 提供。问题是我希望我的自定义 sudo 命令能够访问此脚本中定义的别名。
#! /system/xbin/bash
alias ls='busybox ls --color=auto'
function sudo() {
su -c 'source /system/etc/bash/aliases && "$@"'
}
因此,当我从 shell 调用 sudo 时,它绝对不会输出任何内容。上面脚本末尾的快速“echo ok”证明当我尝试 sudo 某些东西时正在执行源命令。但是在'&&'之后似乎什么也没做。甚至没有回声。甚至没有触及随机文件名的工作,所以它似乎不是标准输出被重定向或什么的。我试过用 '||' 代替 '&&' 但这也不起作用。
调试时出现了问题的第二部分。从 shell 调用以下命令:
su -c 'source /system/etc/bash/aliases && ls'
... ls 输出没有颜色,即使别名文件是在调用 ls 之前立即获取的。现在我彻底糊涂了。