移动端可用的一些Linux终端程序推荐

如题。

有时候我们可能会有在无电脑的情况下开发和运行程序的需求。这个时候,可以使用本文提到的终端程序进行一些程序开发的操作。

一、安卓端

1. Termux

Termux是一个安卓系统上的终端模拟器和Linux环境App,并且在工作时不需要root权限或繁琐的安装步骤。根据官方网站的宣传,Termux拥有的特点包括:安全(这个App相当于一个沙箱环境)、功能齐全(支持几乎所有Linux指令)、可定制(就像正常使用Linux系统那样)、可探索、可携带(装在手机上,想啥时候用就啥时候用)、可扩展(通过连接键盘鼠标并安装X11桌面服务,可以当作电脑使用),以及可修补(基于各种开发工具)。事实上,完全可以把Termux视为一个微型的Linux发行版,甚至可以在上面安装python、gcc、java、node.js等开发工具。

termux app

虽然Google Play上收录了Termux,但更推荐的做法是从Github存储库F-Droid上下载,以获得最新版本的App。

众所周知,安卓系统的底层是个Linux内核(所谓安卓kernel是也)。然而谷歌公司对安卓内核做了太多改动,甚至相比于常见的Linux发行版有了许多残缺。因此,Termux进行了一些额外的工作,从而在安卓上运行起来。具体来说,Termux对所有的软件包进行了与Android NDK的交叉编译,使其能够原生运行在安卓平台上;此外,Termux上的各种软件、配置文件都安装在/data/data/com.termux/files/usr路径下,而非根目录下,从而使其不需要root权限既可运行各种程序。再强调一遍,Termux不是虚拟机,更不是模拟器!

关于如何安装和使用Termux App,网上已有很多教程,此处不再赘述。感兴趣的读者可以阅读《Termux 高级终端安装使用配置教程》《Android Termux 安装 Linux 就是这么简单》 ,此外,官方文档 也提供了许多详细的教程。

在Termux的基础上,还有人搞出了一堆其他的应用,例如安卓平台上的深度学习平台AidLearn、vscode编辑器的安卓系统移植版code FA 等。这些工具极大丰富了安卓系统的程序开发生态。

2. Android Terminal Emulator

更准确地说,这其实是一类应用。一个例子是F-Droid上的 Terminal Emulator for Android 软件。与Termux不同,这一类应用直接连接的是安卓自带的Linux内核,可以运行一些简单的Linux指令。然而由于安卓系统的限制,这些Terminal Emulator的功能是残缺的。

在Linux生态中,有一个著名的“瑞士军刀”应用叫做busybox,它提供了近百种Linux基础指令的命令行调用方式(如下图),体积却非常精简,只有几MB大小,因此在大量嵌入式Linux设备中广泛使用。安卓系统某种意义上也算是一种嵌入式Linux系统,故早起版本的安卓系统也采用了busybox为终端用户界面提供各种指令调用。然而busybox采用的开源许可证是GPLv2许可证,这是一种有传染性的许可证,谷歌公司为了规避busybox的GPL许可证的传染性,于是开发了toybox这一平替版本,并从Android Marshmallow版本(安卓6,发布于2015年)正式替代了busybox。也因此,Android Terminal Emulator调用的其实是安卓内核中的toybox程序。

busybox

toybox提供的指令少于busybox,并且没有提供联网的功能。这就意味着其功能与可扩展性远小于termux。一种使用Android Terminal Emulator的场景是手机获得了root权限以后对系统关键位置的配置文件进行修改,但这样的场景过于小众了。

3. juicySSH

正如其名,juicySSH 实际上是安卓系统上的一个SSH客户端程序。其提供了一个图形化的配置界面,用于对远程服务器的地址和账户进行设置。连接上远程服务器以后,可以通过SSH运行指令以操纵远程机器。

二、iOS端

苹果公司是一家很有自己想法的公司。其最知名的产品包括mac、iphone和ipad。mac运行的系统是macOS,iphone和ipad运行的是iOS。这些系统的底层实际上是一样的,都是经过修改的Unix内核,即Darwin OS

a-shell 是iOS平台上的一个终端程序,其使用ios_system进行命令解释,更底层依然连接到的是Darwin的内核。可以使用的指令包括nslookup、whois、python3、lua、pdflatex、lualatex 等,基本可以看作一个类Unix的终端了。

a-shell

想要了解更多,可以阅读下面的文章: 《a-Shell:适用于 iOS 的多窗口终端 App》