Linux   发布时间:2022-05-08  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – shell如何知道它所在的目录?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图弄清楚 sHell是如何知道你当前所在的目录.我知道有一个环境变量$PWD但是当我尝试手动更改它时,它改变了我的sHell在提示符处显示的内容,但命令如ls和cd不受影响.

cd是一个内部sHell命令,所以我可以理解它可能使用存储在sHell内存中的信息,但是ls是外部的,但是运行ls没有任何东西会给我我原来的任何目录,无论我对$PWD做什么.

解决方法

每个进程都有自己独立的当前工作目录,Linux系统跟踪它.这是OS为每个进程管理的信息之一.有一个系统调用getcwd()来检索这个目录.

$PWD环境变量反映了getcwd()是sHell最后一次检查的内容,但更改它实际上并不会更改当前目录.要做到这一点,sHell必须在$PWD更改时调用chdir(),而不是这样做.

这也是cd必须是内置sHell的原因.当你运行子进程时,子进程获得自己的工作目录,所以如果cd是可执行文件,那么它对chdir()的调用将是无用的,因为它不会改变其父进程的工作目录.它只会改变自己的(短期)工作目录.因此,cd是内置的sHell,以避免启动子进程.

大佬总结

以上是大佬教程为你收集整理的linux – shell如何知道它所在的目录?全部内容,希望文章能够帮你解决linux – shell如何知道它所在的目录?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: