Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adb shell 下使用 termux #68

Open
alwaystest opened this issue Sep 1, 2017 · 12 comments
Open

adb shell 下使用 termux #68

alwaystest opened this issue Sep 1, 2017 · 12 comments

Comments

@alwaystest
Copy link
Owner

alwaystest commented Sep 1, 2017

adb shell termux htop

标签(空格分隔): shell android


玩了一下termux这个软件,记录一下经验。

首先,要在adb shell中调用termux,需要按照termux/termux-app#77 给出的方案。

adb shell连接成功之后,我们希望在环境变量包含的PATH中直接就有一个脚本可以帮我们打开termux的bash。

所以用到mount -o rw,remount /system 重新挂载 system 为可写,然后在 xbin 文件夹下面写一个 shell脚本,一样是从Github上找到的(我的Linux基础还是比较差啊,鸟哥的书大略过了一遍还是不够的):

 #!/system/bin/sh
su $(stat -c %u /data/data/com.termux) /data/data/com.termux/files/home/bin/termux-shell.sh

最后别忘了把system重新挂载为只读 mount -o ro,remount /system

这样就可以方便的在连接上adb shell之后快速调起termux的bash,然后为所欲为了。

需要记录的一点是我在安装了htop之后发现bash里面调起的界面并没有全屏。

然后继续查,偶然在安装了fish之后,启动fish,警告提示默认的terminal的size是没有的。

顺藤摸瓜发现 stty size这个命令可以查看当前terminal中设置的行数和列数。

发现果然adb shell之后是没有配置size这个信息的。

解决方案是在 termux-shell.sh 中加入一条命令 resize,重设terminal的宽高信息。

所以最后的termux-shell.sh 的内容是这样的。

#!/system/bin/sh
resize > /dev/null
export PREFIX='/data/data/com.termux/files/usr'
export HOME='/data/data/com.termux/files/home'
export LD_LIBRARY_PATH='/data/data/com.termux/files/usr/lib'
export PATH="/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets:$PATH"
export LANG='en_US.UTF-8'
export SHELL='/data/data/com.termux/files/usr/bin/bash'
cd "$HOME"
exec "$SHELL" -l
@alwaystest
Copy link
Owner Author

标注一下,本文环境 Nexus6P Android 6.0.1
使用卡刷SuperSu 方式Root
升级到Android 7.1.2 的时候我换成了Magisk 替换Boot.img 的方式Root,发现上面的脚本不好用了。
现在临时解决方案是把 termux-shell.sh 的内容更换为:

 #!/system/bin/sh
/data/data/com.termux/files/home/bin/termux-shell.sh

使用方式:

  1. adb shell
  2. su
  3. /system/xbin/your_shell_name

对了,resize如果不是系统自带的命令的话,需要先安装BusyBox

@alwaystest
Copy link
Owner Author

Update 上次刷机升级到Android 7.1.2后进入到zsh莫名其妙backspace键不好用了,虽然有删除的效果,但是Terminal界面上光标是一直往后移动的。在.zshrc里面添加了export TERM=xterm-256color解决了这个问题。

@QGB
Copy link

QGB commented Dec 21, 2018

@alwaystest 在windows下用哪个终端 adb shell 可以有较好体验

@alwaystest
Copy link
Owner Author

@QGB 最近一直用OSX,WIndows下你要不试试WSL?这个我也没试过,不过Terminal的效果上应该WSL会最接近Linux Terminal的体验吧

@7heaven
Copy link

7heaven commented Apr 1, 2021

其实直接termux自身启动一个sshd,然后adb port forwarding就行

@QGB
Copy link

QGB commented Apr 1, 2021

@7heaven termux 跑 https://github.com/tsl0922/ttyd . 直接浏览器打开

@lozn00
Copy link

lozn00 commented Dec 14, 2022

这个环境没有网络咋办?? ping不痛呢.

@lozn00
Copy link

lozn00 commented Dec 14, 2022

adb 里面识别不到pkg,但是 app里面就可以.无语

@chise0713
Copy link

chise0713 commented Mar 7, 2023

标注一下,本文环境 Nexus6P Android 6.0.1 使用卡刷SuperSu 方式Root 升级到Android 7.1.2 的时候我换成了Magisk 替换Boot.img 的方式Root,发现上面的脚本不好用了。 现在临时解决方案是把 termux-shell.sh 的内容更换为:

 #!/system/bin/sh
/data/data/com.termux/files/home/bin/termux-shell.sh

使用方式:

  1. adb shell
  2. su
  3. /system/xbin/your_shell_name

对了,resize如果不是系统自带的命令的话,需要先安装BusyBox

其实可以吧丢进xbin的文件分成两个
一个termux:

  #!/system/bin/sh
su $(stat -c %u /data/data/com.termux)

一个shell:

  #!/system/bin/sh
/data/data/com.termux/files/home/bin/termux-shell.sh

termux-shell.sh脚本中不带resize指令也可以正常使用

#!/system/bin/sh
export PREFIX='/data/data/com.termux/files/usr'
export HOME='/data/data/com.termux/files/home'
export LD_LIBRARY_PATH='/data/data/com.termux/files/usr/lib'
export PATH="/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets:$PATH"
export LANG='en_US.UTF-8'
export SHELL='/data/data/com.termux/files/usr/bin/bash'
cd "$HOME"
exec "$SHELL" -l

这样脚本就可以正常运行了
使用的termux版本是0.118.0
终端是windows的uwp应用终端
一切都正常运行(除了网络,似乎是载入环境变量那里出问题了?)

@qqm4son
Copy link

qqm4son commented Mar 19, 2023

Error: Cannot run 'pkg' command as root
不能运行pkg 这个怎么解决呢~

@qqm4son
Copy link

qqm4son commented Mar 19, 2023

/system/xbin/termux[9]: cd: /data/data/com.termux/files/home: Permission denied
/system/xbin/termux[10]: /data/data/com.termux/files/usr/bin/bash: inaccessible or not found
127|hltechn:/ $ whoami
shell
hltechn:/ $ pkg up
/system/bin/sh: pkg: inaccessible or not found
127|hltechn:/ $

adb shell 权限下 行不通

@chise0713
Copy link

/system/xbin/termux[9]: cd: /data/data/com.termux/files/home: Permission denied
/system/xbin/termux[10]: /data/data/com.termux/files/usr/bin/bash: inaccessible or not found
127|hltechn:/ $ whoami
shell
hltechn:/ $ pkg up
/system/bin/sh: pkg: inaccessible or not found
127|hltechn:/ $

adb shell 权限下 行不通

看看你楼上我发的,是可以的。但是最好还是在手机上装openssh。adb shell没办法访问网络

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants