Termux快速起步

Termux是一个移植到Android系统的终端模拟程序,集成了大量的命令行工具。Termux目标是为移动设备提供Linux命令行使用体验而无需root设备或特殊设置。

工作原理

终端模拟器(terminal emulator)是通过使用系统调用 execve 来加载命令行程序的应用,并且重定向标准输入,输出以及错误的数据流到显示屏幕。大多数在Android上提供的终端应用都是功能有限,通常由操作系统提供,或者由root工具如Magisk提供。Termux则是进一步提供了大量的GNU/Linux软件给Android。

Termux不是虚拟机,也不是模拟环境。所有提供的软件包都是使用 Android NDK 进行交叉编译,并且采用了兼容补丁以便能够在Android上工作。由于Android操作系统不提供完全访问文件系统的权限,所以Termux不能在标准目录下安装,例如 /bin , /etc , /usr 或者 /var ,所有文件都是位于私有应用目录,位于: /data/data/com.termux/files/usr

Termux使用了 $PREFIX 环境变量来引用上述目录,需要注意这个目录不能修改或者迁移到SD卡:

  • 文件系统必须支持unix权限,以及特定的软连接或sockets

  • prefix目录已经被硬编码到所有执行程序中

用户文件存储在 $HOME 环境变量设置的目录 /data/data/com.termux/files/home

Termux提供的功能

使用Termux可以实现很多用户侧功能:

  • 使用Python处理数据

  • 在开发环境进行编程 - clang, python, vim

  • 下载和管理文件

  • 学习Linux命令行

  • 运行SSH客户端

  • 同步和备份文件 - yncthing, rsync, rclone

在Termux的仓库中提供了超过1000个软件包,并且如果没有找到需要的二进制执行程序,你甚至可以自己编译 - 因为Termux提供了各种开发软件的编译器,例如C, C++, Go, Rust等,也包含了常见的解释器语言,如 NodeJS, Python, Ruby。

需要注意,Termux不是一个root工具,也不提供root权限。

root

通常情况下Termux不需要Android设备root,也就是说它面向的是非root用户。

不过,也可以在root过的设备上使用,提供了更多hack功能:

  • 修改设备firmware

  • 维护操作系统或内核的参数

  • 无需交互就可以安装和卸载APKs

  • 具备访问整个系统的读写权限

  • 能够直接访问硬件设备

  • 在Android上通过 chroot 或容器化来安装一个Linux发行版

  • 完全控制Android设备

一些Tips

  • 通过 pkg upgrade 可以更新系统

  • 建议经常备份数据

  • 在执行下载的脚本之前,务必检查: 不要运行不了解的任何程序,否则可能破坏系统

  • 仔细关注屏幕输出,脚本执行的提示会帮助解决很多问题

参考