You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 9修改/system/build.prop遇权限问题及sed命令异常求助

问题解决方案

一、解决echo追加build.prop权限拒绝问题

问题原因

当在本地终端执行:

adb shell su 0 "echo net.hostname=XXXXXX >> /system/build.prop"

本地shell会优先解析重定向符号>>,试图在本地电脑创建/system/build.prop文件,而非将该重定向操作传递到设备的root shell中,因此触发权限拒绝错误。而分步执行时,所有命令都在设备的root shell环境中运行,>>由设备shell解析,因此可以正常写入。

解决方案

通过以下方式避免本地shell解析重定向符号:

  • 使用单引号包裹整个命令串,让本地shell不解析内部的特殊符号:
    adb shell su 0 'echo net.hostname=XXXXXX >> /system/build.prop'
    
  • 转义重定向符号>>:
    adb shell su 0 "echo net.hostname=XXXXXX \>> /system/build.prop"
    
  • 通过sh -c在设备端执行完整命令:
    adb shell su 0 sh -c "echo net.hostname=XXXXXX >> /system/build.prop"
    

注意:执行前确保已通过adb shell su 0 "mount -o rw,remount /"成功将系统分区挂载为可读写状态(挂载后可通过adb shell mount | grep /dev/root确认挂载状态是否为rw)。

二、解决sed命令追加内容异常问题

问题原因

执行:

adb shell su 0 "sed -i '$aNew line of data' /system/build.prop"

时,本地shell会解析双引号内的$a(将其视为本地环境变量),若a未定义则会被替换为空字符串,最终传递到设备的sed命令变为:

sed -i 'New line of data' /system/build.prop

这会导致sed错误地将New识别为命令,最终出现每一行下方添加ne of data的异常。

解决方案

通过以下方式避免本地shell解析$符号:

  • 使用单引号包裹sed的脚本部分:
    adb shell su 0 'sed -i "$aNew line of data" /system/build.prop'
    
  • 转义$符号:
    adb shell su 0 "sed -i '\$aNew line of data' /system/build.prop"
    

这样$a会被完整传递到设备的sed中,$代表最后一行,a为sed的追加命令,即可在文件末尾正常添加指定内容。

内容的提问来源于stack exchange,提问作者tirenweb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:19:53