A Zero-dependency UNIX Shell (from xv6)

Shell 是 Kernel 之外的 “壳”

  • 它也是一个状态机 (同 minimal.S)
    • 完全基于系统调用 API

我们移植了 xv6 的 shell

  • 零库函数依赖 (-ffreestanding 编译、ld 链接)
  • 可以作为最小 Linux 的 init 程序

支持的功能

  • 重定向/管道 ls > a.txt, ls | wc -l
  • 后台执行 ls &
  • 命令组合 (echo a ; echo b) | wc -l

阅读代码

应该如何阅读代码?

  • strace
    • 适当的分屏和过滤
    • AI 使阅读文档的成本大幅降低
  • gdb
    • AskGPT: How to debug a process that forks children processes in gdb?
      • AI 也可以帮你解释 (不用去淘文档了)
    • 以及,定制的 visualization
      • 对于 Shell,我们应该显示什么?

理解管道