【Linux】—简单实现一个shell(myshell)

大家好呀,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流哦!

本文由:残念ing原创CSDN首发,如需要转载请通知

个人主页:残念ing-CSDN博客,欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

📣系列专栏:[残念ing 的【Linux】系列专栏------CSDN博客]

实现一个自己的shell

  • [1 步骤简化](#1 步骤简化)
    • [1. 获取并且打印命令行提示符](#1. 获取并且打印命令行提示符)
    • [2. 获取用户命令](#2. 获取用户命令)
    • [3. 分析命令(解析命令)](#3. 分析命令(解析命令))
    • [4. 执行命令](#4. 执行命令)
    • [5 补充:](#5 补充:)
      • [5.1 解决需要shell自己执行的内建命令](#5.1 解决需要shell自己执行的内建命令)
      • [5.2 环境变量是需要自己去维护的,所以获取当前的路径不能去环境变量里面获取,要直接从系统里面获取](#5.2 环境变量是需要自己去维护的,所以获取当前的路径不能去环境变量里面获取,要直接从系统里面获取)
      • [5.3 作为一个shell,获取环境变量应该从系统的配置类,我们几天就直接从父shell中获取环境变量](#5.3 作为一个shell,获取环境变量应该从系统的配置类,我们几天就直接从父shell中获取环境变量)
      • 怎么保证接下来我们的子进程使用myshell的环境变量
  • 总结:

1 步骤简化

1. 获取并且打印命令行提示符




2. 获取用户命令

根据输入流获取字符串函数接口



3. 分析命令(解析命令)

将字符串分离开的接口 ,当切成功了后返回地址,失败后返回null





补充:为了让其更好看增加

4. 执行命令



5 补充:

5.1 解决需要shell自己执行的内建命令



5.2 环境变量是需要自己去维护的,所以获取当前的路径不能去环境变量里面获取,要直接从系统里面获取



定义一个环境变量的pwd数组

5.3 作为一个shell,获取环境变量应该从系统的配置类,我们几天就直接从父shell中获取环境变量


怎么保证接下来我们的子进程使用myshell的环境变量

复制代码
![](https://i-blog.csdnimg.cn/direct/c9210be00587444a8572f42ef3f4b195.png)

结果:

总结:

shell本质上就是一个进程,所谓的命令行参数,环境变量,就是shell内部的表(指针数据组),如果是表的话可以通过(env、expect...)这些命令会围绕着这张表来让shell来自主定义与维护这张表

相关推荐
岁岁种桃花儿2 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步
匀泪2 小时前
云原生(LVS DR模式ipvs实验)
服务器·网络·lvs
_OP_CHEN2 小时前
【Linux系统编程】(二十九)深度解密静态链接:从目标文件到可执行程序的底层魔法
linux·操作系统·链接·文件系统·c/c++·静态链接
草莓熊Lotso2 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
RisunJan2 小时前
Linux命令-lprm(删除打印队列中任务)
linux·运维·服务器
Web极客码2 小时前
WordPress从经典编辑器升级到古腾堡编辑器
运维·编辑器·wordpress
云姜.2 小时前
TCP协议特性
服务器·网络·tcp/ip
zzzsde2 小时前
【Linux】进程(5):命令行参数和环境变量
linux·运维·服务器
迎仔2 小时前
E-自动化:GPU驱动维护自动化
运维·gpu·gpu驱动
代码游侠2 小时前
复习——Linux设备驱动开发笔记
linux·arm开发·驱动开发·笔记·嵌入式硬件·架构