跳转至

目录导航

你应该已经注意到,框架代码中对于外部命令(如 ls, cat)和内建命令(如 exit)的处理方式是不同的。每个 shell 都需要支持一些内建命令,这些命令是 shell 本身具有的功能,而不是外部程序。exit 命令需要作为内建命令来实现,因为它会退出 shell 本身。

这一节中,你需要添加两个用于目录导航的内建命令。

pwd

pwd 命令用于打印当前工作目录。

当前工作目录

每个进程在某一时刻都处在某个特定工作目录中。工作目录可以看成进程的一个属性。它关联了对某一进程而言的相对路径和系统绝对路径。

当创建新进程时,子进程将继承其父进程的工作目录。

你可能需要使用 getcwd() 系统调用来获取当前 shell 进程的这一属性。

如果感兴趣,你也可以尝试查看其他进程的工作目录。(提示:ls -l /proc/[pid]/cwd

cd

cd 用于更改当前工作目录为指定目录。你可能需要使用 chdir() 系统调用。你可以运行 man 函数名 来查看系统自带的文档,或者上网搜索更多信息。

在完成了本节的任务后,你应该已经可以自由的目录导航了~

思考

pwdcd 都必须是内建命令吗?

要求 满分
正确实现 pwd 内建命令 10%
正确实现 cd 内建命令 10%
「可选」 cd 在没有第二个参数时,默认进入家目录 5%