问题描述
希望在Android 4.1.2设备上安装Toybox,这是一个包含了多种命令行工具的包,适合高级用户使用终端模拟器。由于Android 4.1.2不包含Toybox,因此需要手动安装。用户关心的问题是:
1. Toybox应该安装到系统分区还是数据分区?
2. 当存在Android自带命令与Toybox命令同名时,如何让Toybox版本优先执行?
3. 如何设置环境变量PATH以确保Toybox命令优先执行?
解决方案
方案1:安装到系统分区
注意事项:
– 系统分区上的更改不会因为系统重置而丢失。
– 适用于经常进行系统修改的用户。
步骤:
1. 挂载系统分区为可写模式(如果需要):
shell
adb shell su -c "mount -o rw,remount /system"
复制toybox二进制文件到/system/xbin目录,并赋予执行权限:
shell
adb shell su -c "cp /path/to/toybox /system/xbin/"
adb shell su -c "chmod 755 /system/xbin/toybox"创建toybox二进制文件的符号链接:
shell
adb shell su -c "toybox | sed 's/ /\\n/g' | head -n -1 | tr -d '\\r' | while read line; do ln -sf /system/xbin/toybox /system/xbin/$line; done"编辑默认shell的配置文件(如mkshrc)以添加路径:
shell
adb shell su -c "echo 'PATH=/system/xbin:$PATH' >> /system/etc/mkshrc"
方案2:安装到数据分区
注意事项:
– 数据分区上的更改会在系统重置时丢失。
– 适用于不需要长期保存更改的用户。
步骤:
1. 创建/data/my_bin目录:
shell
adb shell su -c "mkdir /data/my_bin"
复制toybox二进制文件到/data/my_bin目录,并赋予执行权限:
shell
adb shell su -c "cp /path/to/toybox /data/my_bin/"
adb shell su -c "chmod 755 /data/my_bin/toybox"创建toybox二进制文件的符号链接:
shell
adb shell su -c "/data/my_bin/toybox | sed 's/ /\\n/g' | head -n -1 | tr -d '\\r' | while read line; do ln -sf /data/my_bin/toybox /data/my_bin/$line; done"编辑默认shell的配置文件(如mkshrc)以添加路径:
shell
adb shell su -c "echo 'PATH=/data/my_bin:$PATH' >> /system/etc/mkshrc"
提示
- 可以创建一个简单的shell脚本来调用Toybox,例如:
shell
#!/bin/sh
/system/xbin/toybox "$@"
并将其命名为t
,这样可以直接使用t
命令来调用Toybox的工具。
通过上述步骤,用户可以根据自己的需求选择合适的安装位置,并确保Toybox命令优先执行。