내 컴퓨터의 셸에서 adb shell cmd package list packages
을 실행하고 설치된 모든 패키지의 목록을 가져올 수 있습니다. 터미널 에뮬레이터 (현재는 Termux를 사용)에서 안드로이드 전화 (Nexus 6P)에서 로컬로 비슷한 명령을 실행하고 싶습니다.Android 디바이스에서 로컬로 터미널 에뮬레이터에서 "adb 쉘"명령을 어떻게 실행합니까?
/system/bin/sh
으로 동일한 쉘을 열고 /system/bin/cmd package list packages
을 실행하면 아무 일도 일어나지 않습니다 (오류가 없으며 아무 것도 출력하지 않고 프롬프트를 다시로드합니다).
/system/bin/cmd -l
을 실행하면 예상대로 옵션 목록이 나타납니다. $PATH
및 $LD_LIBRARY_PATH
은 두 환경에서 동일합니다. 하나의 큰 차이점은 echo $USER
은 adb shell
에서 "shell"을 반환하지만 내 로컬 사용자 이름은 Termux에서 시작한 /system/bin/sh
에서 반환한다는 점입니다.
Android의 로컬 터미널 에뮬레이터에서 adb shell
에서 실행되는 명령의 동작을 복제 할 수있는 방법이 있습니까?
편집 : 내 장치는 루팅되어 있으며 루트 전용 솔루션으로 정상입니다.
당신이 참조 할 수 있습니다 그것의 자신의
sush
쉘보다는 시스템 쉘을 사용하도록 지시 적절한 SELinux에 컨텍스트를 설정로 로그인 tructs –링크를 제공해 주셔서 감사합니다. 그러나, 나는 링크가 실제로 내가 원한 것의 반대를 시도하고 있다고 생각한다 : adb로부터 termux의 행동을 모방해라. 실제로 디바이스에서 로컬로 실행되는 쉘에서'adb shell'에서 실행되는 명령의 동작을 에뮬레이트하고 싶습니다. 내 혼란은 같은 장치에서 같은 셸 바이너리를 사용하고 다른 출력을 얻는 동일한 바이너리를 실행하고 있다는 것입니다 (기술적으로 로컬에서 실행할 때 출력이 없음). – rjdang