如果只想查看如何配置 ish,可点击右侧目录中的【ish shell 和 Alpine linux】跳转到教程部分
本文将记录使用 ish shell 的契机、基本使用方法和常用环境的配置,以及一些流水账。要不是自己的网站,这样的标题以及这样的行文顺序,怕是要被喷死:0
故事还要从 UTM 正式上架 AppStore 说起
前言
很早之前,大约是在 2021 年的时候就接触到了 UTM 。彼时,由于一些原因,大约 1 个月中会有一两天需要用到 windows, 于是便在电脑中安装了 UTM。而当时选择 UTM 最重要的原因就是免费。像 Parallel Desktop 这样的专业虚拟机固然好用,但它选择了我最讨厌的订阅制而不是买断制,而且对于我的使用频率来说,一年 400+ 的费用也显得很不划算。

沉寂
由于 UTM 不想 PD 那样只需点点点就可以完成虚拟机的安装,在配置 win10 虚拟机的过程中,免不了需要查阅大量的资料解决问题。在这过程中,发现 UTM 也可以通过 AltStore 安装到手机中。于是,在好奇心的驱使下,也尝试了在手机上安装了 UTM 以及 xp / ubuntu 系统,但当时的运行速度真的让人热泪盈眶。于是在收好这一不错的 玩具 后,与虚拟机的故事便陷入近 3 年平淡的沉寂。
契机
缘起缘灭,都需要沉淀,也需要契机
2024 年 6 月,在好友 J 的邀请下,一起参加了深圳人力资源部发布的培训课程,各自选择了周末上的课程。当时我怀着做个“机器人”的小小梦想,选择 C语言 以及 嵌入式。


这两门课程都需要大量的练习,于是便想要利用上下班的通勤时间进行练习。此时,又动了手机上安装一个 linux 环境的心思。其实,如果只是要练习 C 编码,那只需要装个热门的编辑器像 Sololearn 或者 C/C++-programing languages 就足够,但嵌入式还涉及到 asm 、库的链接、编译等;等等,还有 cmake (makefile是我见过最恶心的东西) 。那这些就必须要求一个完整的 linux 环境了。
这里需要说明一下,嵌入式的开发在目前的我看来,尽管几乎所有的课程老师都会要求装一个 linux 虚拟机,但实际并不是一定需要。因为安装 linux 的目的是使用 arm 芯片的交叉编译工具链,但如果我们去 arm 的 官网 查看,就会发现其中其实也提供了 windows 和 mac 下的编译工具链,于是当时整个学习过程我都仅使用 mac 下的 arm gcc toolchain,
以便剩下近 20G 的硬盘空间。但是,如果是正经开发,还是使用芯片/主板厂商提供的 linux 镜像会比较方便,因为厂商往往在其中集成了大量常用的工具/命令。
但,由于对 ios 下 UTM 的龟速记忆尤新,便首先将其排除在我的选择之外。此时,B站的推荐算法将 ish 摆在了我的眼前。
ish shell 和 Alpine linux
起初,我以为 ish shell 只是像 stash 一样,只是模拟 linux 命令的执行,直到我安装 python 尝试了http服务的启动命令:
1 | python -m http.server 8080 |
然后在 Safari 浏览器中看到了执行结果,我才确定它真的是一个完整的linux系统。

更重要的是,它非常地轻量快速,在运行绝大部分的脚本时候,手机也不会发烫(除了守在手机上运行视频、图片处理相关相关的任务)。而它如此优秀的原因是因为使用了非常轻量的 Alpine Linux。
需要注意的一点是,从它的自述中发现,在 alpine linux 中包管理器是 apk 而不是与 ubuntu 一致的 apt。
Simple
Alpine Linux is a very simple distribution that will try to stay out of your way. It uses its own package manager called apk, the OpenRC init system, script driven set-ups and that’s it! This provides you with a simple, crystal-clear Linux environment without all the noise. You can then add on top of that just the packages you need for your project, so whether it’s building a home PVR, or an iSCSI storage controller, a wafer-thin mail server container, or a rock-solid embedded switch, nothing else will get in the way.
ish 安装
请通过 App Store 进行安装即可:
- 国区:https://apps.apple.com/cn/app/ish-shell/id1436902243
- 美区:https://apps.apple.com/us/app/ish-shell/id1436902243
或者:
常用环境的安装和配置
由于包源在国外,如果安装速度较慢,需要自备 魔法 才可以快速安装哦。
vim
虽然在非 ssh 连接服务器的情况下,它就是个废物,但学习下还是有必要的。
1 | apk add vim |

python
运行命令:
1 | apk add python3 |
等待安装完成后可以输入 python3 即可验证安装结果,如果你希望通过 python 而不是 python3 运行,可以执行以下命令
1 | ln -s /usr/bin/python3 /usr/bin/python |
, 之后就可以通过输入 python 直接运行 python 了。

pip
运行命令:
1 | apk add py3-pip |
等待安装完成后,就可以通过 pip 包管理器,为 python 环境安装需要的 package。

gcc 、 cmake以及基础的 C 开发环境
依次运行以下命名即可安装 gcc 和 cmake
1 2 3 | apk add gcc apk add cmake |
运行完成后即可运行 gcc 和 cmake。

但是,如果我们此时进行编译,会因为连基础的头文件如 stdlib.h与 stdio.h的区别都没有而报错。此时我们需要安装C怨言的基础开发环境。
于是,我们需要通过运行以下的命令开保证系统有几本的头文件:
更新包的列表:
1 | apk update |
安装 build-base 元包,它包含 gcc、musl-dev(C标准库)、make、binutils 等必要工具, 等等,如果这样,那前面的我们是不是白安装的gcc和cmake,不管了,继续
1 | apk add build-base |
然后我们可以测试一下:
1 | touch test.c |
输入在 test.c 中输入:
1 2 3 4 5 6 |
进行编译并运行:
1 2 3 | gcc test.c -o test ./test |

一些常用的按键组合
在一些情况下,我们需要使用组合键来达到中断、退出程序的目的,比如说 ctrl + c / ctrl + z
那么我们可以先点击键盘上的 ^ 然后点击按键组合的另一个键。如 ctrl + c,则可如下图所示,先点击 ^ ,再点击 C 即可。

Comments NOTHING