Android shell 默认使用 busybox 命令
Android shell using busybox commands as default
我是 运行 android 上的一个脚本,为了使其尽可能可移植,所有命令都使用 busybox。我目前是如何设置它的,每个命令都有一个名称相同的函数,所以它将这些命令转换为使用 busybox,如下所示:
echo () {
busybox echo
}
echo "hai"
由于每个命令都必须执行此操作,因此脚本中需要大量 space。这就是为什么我试图找出一种方法来强制 shell 默认使用 busybox 而不是 /system/bin 或 /system/xbin。
这可以通过修改 PATH 变量来实现吗?或者我可以使用 shell 中内置的环境变量?
或者我应该这样做吗?:
bs () {
busybox $@
}
bs echo "Some text"
(我想尽可能避免这种情况,因为它会降低可读性)
编辑
我可以启动一个循环的后台进程,当它检测到一个命令被传递给 shell 到进程时,它会停止这个并将它传递给 busybox 吗?在 shell 处理它之前以某种方式从 stdin 读取?
编辑 2
所以我想像这样将命令重定向到 busybox:
busybox <<EOF
echo "hai";
EOF
这可以用在什么地方吗?
更新
我已经开始使用 busyboxes ash shell,它可以做我想做的一切。显然,在将命令传递给 shell.
之前,无法拦截命令
使用 shell 的 built-in 'alias' (Alias Substitution, Shell Command Language, IEEE Standard 1003.1 (2013) ) 方法。
例如:
alias vi="busybox vi"
vi readme.txt
会将单词 'vi' 替换为 'busybox vi',然后 shell 将处理
busybox vi readme.txt
因为它是一个简单的替换,所以所有参数都被保留并传递给被替换的命令。
您还可以将默认参数添加到替换中,如下所示:
alias fbset="busybox fbset -fb /dev/graphics/fb0"
之后不再需要指定帧缓冲区 - 它已为您添加。通常程序会将最后指定的参数作为活动参数,因此如果您确实需要指定另一个帧缓冲区(在上面的示例中),它将忽略别名中提供的那个。
我是 运行 android 上的一个脚本,为了使其尽可能可移植,所有命令都使用 busybox。我目前是如何设置它的,每个命令都有一个名称相同的函数,所以它将这些命令转换为使用 busybox,如下所示:
echo () {
busybox echo
}
echo "hai"
由于每个命令都必须执行此操作,因此脚本中需要大量 space。这就是为什么我试图找出一种方法来强制 shell 默认使用 busybox 而不是 /system/bin 或 /system/xbin。 这可以通过修改 PATH 变量来实现吗?或者我可以使用 shell 中内置的环境变量?
或者我应该这样做吗?:
bs () {
busybox $@
}
bs echo "Some text"
(我想尽可能避免这种情况,因为它会降低可读性)
编辑
我可以启动一个循环的后台进程,当它检测到一个命令被传递给 shell 到进程时,它会停止这个并将它传递给 busybox 吗?在 shell 处理它之前以某种方式从 stdin 读取?
编辑 2
所以我想像这样将命令重定向到 busybox:
busybox <<EOF
echo "hai";
EOF
这可以用在什么地方吗?
更新
我已经开始使用 busyboxes ash shell,它可以做我想做的一切。显然,在将命令传递给 shell.
之前,无法拦截命令使用 shell 的 built-in 'alias' (Alias Substitution, Shell Command Language, IEEE Standard 1003.1 (2013) ) 方法。 例如:
alias vi="busybox vi"
vi readme.txt
会将单词 'vi' 替换为 'busybox vi',然后 shell 将处理
busybox vi readme.txt
因为它是一个简单的替换,所以所有参数都被保留并传递给被替换的命令。
您还可以将默认参数添加到替换中,如下所示:
alias fbset="busybox fbset -fb /dev/graphics/fb0"
之后不再需要指定帧缓冲区 - 它已为您添加。通常程序会将最后指定的参数作为活动参数,因此如果您确实需要指定另一个帧缓冲区(在上面的示例中),它将忽略别名中提供的那个。