cd命令的实现(谁能告诉我源码在哪里)

不问江湖任少侠 2016-11-13 10:18:53
我想cd 命令是一个进程,终端也是一个进程,chdir函数会让调用它的进程进入到别的目录,那么我们终端调用的cd怎么能改变终端的目录呢?我是新手。。求教一下
...全文
996 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 u014486599 的回复:
让命令在父进程中运行,不让产生子进程。查看shell中的source命令
嗯,谢谢思路,我本来以为很简单的 结果自己实现了一下发现居然这里有问题
  • 打赏
  • 举报
回复
引用 4 楼 nswcfd 的回复:
cd一定是shell的内置命令。 因为子进程不能修改父进程的运行环境(pwd是运行环境之一)
这个我是同意的
  • 打赏
  • 举报
回复
引用 3 楼 wenxy1 的回复:
搜busybox
我弱弱的问问 cd 真的是busybox里的吗 我执行 ./busybox cd 就是找不到命令 但是 ./busybox ls 就是显示。其中是不是有什么端倪 我怀疑cd 没有链接到busybox了都。。
ipqtjmqj 2016-11-15
  • 打赏
  • 举报
回复
参考http://169it.com/tech-qa-linux/article-12706149614597167922.html ubuntu可用命令sudo apt-get source bash 获取 获取,然后解压,在builtins/cd.def文件中
  • 打赏
  • 举报
回复
http://blog.csdn.net/asx20042005/article/details/7092068 这里我得到了shell和内核交互的过程,大家也可以看看,
http://blog.csdn.net/xiaolang85/article/details/7861441 这里是采纳上面的回复的意见,看了看source命令,讲的都挺好。

主要总结一下就是,shell是用户和内核交流的桥梁,帮忙把用户的命令传送给内核。cd 命令是shell的内置命令,所以使用cd命令的时候就是shell自己调用了chdir函数,使用man chdir 可以得知,chdir的作用是改变调用它的进程的当前工作目录。所以说cd命令是shell的内置命令,只有shell亲自调用这个函数才能实现shell目录的转换。我是这样理解的,如果觉得不对可以来讨论

引用 9 楼 wenxy1 的回复:
引用 6 楼 renyongjian1994 的回复:
[quote=引用 3 楼 wenxy1 的回复:]
搜busybox
我弱弱的问问 cd 真的是busybox里的吗 我执行 ./busybox cd 就是找不到命令 但是 ./busybox ls 就是显示。其中是不是有什么端倪 我怀疑cd 没有链接到busybox了都。。


运行busybox --help可以列出所有的shell命令。[/quote]

是这个吗?
Wenxy1 2016-11-15
  • 打赏
  • 举报
回复
引用 6 楼 renyongjian1994 的回复:
引用 3 楼 wenxy1 的回复:
搜busybox
我弱弱的问问 cd 真的是busybox里的吗 我执行 ./busybox cd 就是找不到命令 但是 ./busybox ls 就是显示。其中是不是有什么端倪 我怀疑cd 没有链接到busybox了都。。
运行busybox --help可以列出所有的shell命令。
隐术后生 2016-11-14
  • 打赏
  • 举报
回复
让命令在父进程中运行,不让产生子进程。查看shell中的source命令
nswcfd 2016-11-14
  • 打赏
  • 举报
回复
cd一定是shell的内置命令。 因为子进程不能修改父进程的运行环境(pwd是运行环境之一)
Wenxy1 2016-11-14
  • 打赏
  • 举报
回复
搜busybox
  • 打赏
  • 举报
回复
http://blog.csdn.net/earbao/article/details/17955815
  • 打赏
  • 举报
回复
或者有大哥记得cd命令实现的源码在什么地方告诉我我自己去看看也很感激。

18,784

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧