linux – 管道中cd命令的行为
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 管道中cd命令的行为,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含927字,纯文字阅读大概需要2分钟。
内容图文
![linux – 管道中cd命令的行为](/upload/InfoBanner/zyjiaocheng/954/8bf18831b17c4b6c9dd7c99d675620ec.jpg)
我的问题是为什么当cd在管道的开头或中间时,cd的行为与bash的行为方式相同.
当我给
cd | ls,它仍然打印父目录中的文件,基本上有效,它忽略了cd命令.
为什么在csh中没有以这种方式实现:
当我给cd | ls,它应该cd到home directoy并在该目录上应用ls.当控制返回到shell时,它应该保留shell运行时的旧值pwd.
即管道中的cd应该使用cd命令右侧所有命令的已更改目录.
我在这里错过了一些基本的设计原则吗?
解决方法:
你确实错过了一个基本的设计原则.
通常,当您启动一个进程时,它有自己的“环境”,包括所有环境变量和当前工作目录.进程所做的任何更改都仅限于该进程及其子进程.实际上这是非常可取的,想象一下,如果进程可能影响他们的兄弟姐妹,甚至更糟糕的是他们的父母,那么可能会出现混乱.
当你有管道时,你有一个父,你指定了一个管道的shell和一些所有“管道”在一起的孩子,每个孩子都有一个独立的环境.
一旦理解了这一点,就可以很容易地处理事物并更改父目录中的目录.
(cd /etc && ( ls | grep x))
这里整个事情都在()中,因此它在子进程中运行,因此cd不会影响当前的shell,但会影响在(grand-)子进程中运行的管道.
内容总结
以上是互联网集市为您收集整理的linux – 管道中cd命令的行为全部内容,希望文章能够帮你解决linux – 管道中cd命令的行为所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。