今天正好看到了TualatriX在去年写的《盗梦终端:如何进入第1000层梦境》,很有意思。程序猿说,盗梦空间就像是一层层的“函数调用”:Inception:一场层层调用的函数大战
而Shell有个内置的环境变量$SHLVL,可以用echo %SHLVL%显示当前Shell的级别Level或者说递归层次,你可以想象成Inception里的第n层梦境。在使用Shell(Bash为例)的过程中,实际上就是一个Inception的过程:
执行一个脚本的时候,并不是在当前的Shell环境下执行的,而是父进程shell fork()出一个“相同”的子进程,再调用exec()重新装载,执行具体命令,执行完毕后,销毁它,并回到当前的Shell。
一般情况下,我们的Shell都是第一层,如何进入下一层?只需要不停地执行自身(bash)即可,如果理解递归的话-3-
Shell最多支持几层梦境呢?Bash的源代码variables.c里搜索adjust_shell_level,可以找到
if (shell_level < 0) shell_level = 0; else if (shell_level > 1000){ internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level); shell_level = 1; }
也就是说最多可以有1000层,超过1000层后,又回到第1层,也就是现实世界了?其实是不一样的,最多1000层什么是伪的,因为1001层(显示1)两次exit后重新显示999了- -! 回到第1层还是要一层层返回上去的吧…
学习鸟,我还没看过bash的源码。。。
我也就是看看什么功能在哪个文件实现 大概用什么库什么函数实现的-3-
突然发现这个HTML5的主题好凶残!看来要找点好主题换了。。。
右上角竟然看到了我的logo。。。
恩 看看那些做前端的 自己压力又好大orz
这个好玩 😉
原来shell SHLVL这个变量
表示不懂的我路过. 😈