平台
rk3288 + android 7.12
描述
在使用android 5.1 时, 在adb shell 下, 可以使用ls 和 ll 命令, 但在7.1中, 发现 ll 命令无法使用: /system/bin/sh: ll: not found
分析
在linux下, ll 命令的是由alias产生的, 它的宿主是ls:
alias ll=‘ls -l’
在android 中应该也是这样的, 在搜索5.1系统文件内容时, 找到了文件: /system/etc/mkshrc
基中对ll 的定义如下:
# Copyright (c) 2010, 2012, 2013, 2014 # Thorsten Glaser <tg@mirbsd.org> # This file is provided under the same terms as mksh. #- # Minimal /system/etc/mkshrc for Android # # Support: https://launchpad.net/mksh ... alias l='ls' alias la='l -a' alias ll='l -l' alias lo='l -a -l'
mkshrc文件存放于external目录下:
$ ls external/mksh/
Android.mk Makefrag.inc mkmf.sh mkshrc MODULE_LICENSE_BSD_LIKE NOTICE src
而在7.1中的mkshrc中, 并没有找到 ll 命令相关的定义.
解决
只需要把相应的 ll 定义加到 mkshrc中即可.
# Copyright (c) 2010, 2012, 2013, 2014 # Thorsten Glaser <tg@mirbsd.org> # This file is provided under the same terms as mksh. #- # Minimal /system/etc/mkshrc for Android # # Support: https://launchpad.net/mksh : ${HOSTNAME:=$(getprop ro.product.device)} : ${HOSTNAME:=android} : ${TMPDIR:=/data/local/tmp} export HOSTNAME TMPDIR if (( USER_ID )); then PS1='$'; else PS1='#'; fi PS4='[$EPOCHREALTIME] '; PS1='${| local e=$? (( e )) && REPLY+="$e|" return $e }$HOSTNAME:${PWD:-?} '"$PS1 " #add-start alias l='ls' alias la='l -a' alias ll='l -l' alias lo='l -a -l' alias find='busybox find' #add-end
find 命令也比较常用, 所以我也把它加进去