当前位置: 首页 > 面试题库 >

我如何知道我是否正在运行嵌套外壳程序?

封飞
2023-03-14
问题内容

当使用*
nix外壳程序(通常是bash)时,我经常产生一个子外壳程序,可以用它处理一个小任务(通常在另一个目录中),然后退出该外壳程序以继续父外壳程序的会话。

偶尔,我会失去对运行嵌套shell还是在顶层shell中的跟踪,并且会不小心产生其他的子shell或错误地退出顶层shell。 。

有没有一种简单的方法可以确定我是否在嵌套shell中运行?还是我以完全错误的方式解决问题(通过生成子壳)?


问题答案:

$SHLVL变量跟踪您的外壳嵌套级别:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1

作为生成子外壳程序的替代方法,您可以从堆栈中推送和弹出目录,并保留在同一外壳程序中:

[root@localhost /old/dir]# pushd /new/dir
/new/dir /old/dir
[root@localhost /new/dir]# popd
/old/dir
[root@localhost /old/dir]#


 类似资料:
  • 问题内容: 我想在Jenkins管道中运行像这样的嵌套shell命令: 不幸的是,当我将其格式化为管道语法时: Jenkins似乎无法正确运行它们,但是输出: 我试图在bash下运行命令,如下所示: 在jenkins管道上运行bash命令, 但最终遇到类似的问题。任何想法如何解决这个问题? 问题答案: 如果将shell命令扩展为两行,这对于Jenkins Pipeline来说将变得更加容易: 第一

  • 问题内容: 我想知道我是否在通话。 如果我正在通话,请启动服务(服务部分已清除)。我该怎么做呢? 参加通话时,我需要致电服务中心…我不知道该怎么做?有什么帮助吗? 问题答案: 您需要广播接收器… 在清单中声明广播接收器… 还声明使用权限… 广播接收器类… 还有一类可自定义电话状态侦听器…

  • 问题内容: 1.考虑我的代码在我拥有的JPanel的某行上,我是否自动在EDT上运行? 2.对于不属于GUI,JPanels或其他视图类的其他所有类的相同问题,简单逻辑类。 3.如果我有正在播放音乐的JPanel,则音乐应该在事件分发线程或非EDT的其他线程上运行(因为没有阻塞GUI,尽管我感觉运行没有问题) (来自EDT)? 注意:我想要一个一般规则,而无需使用“ 谢谢” 问题答案: 没有。 没

  • (我已经删除了上一个,所以我想你可以在编辑中找到它) 编辑 所以按照bad_coder在评论中告诉的以及他分享的链接中的大多数答案,我点击了“选项显示所有”,我得到了这个 1) 这里唯一有意义的是点击“”按钮,所以我点击了它 2) 现在我应该用路径替换突出显示的部分(换句话说,我在cmd中键入“where python”后得到的路径) 3) 这就是我发现的。那么我应该在突出显示的部分复制并粘贴哪一

  • 问题内容: 例如,Facebook.com是否可以在浏览器上运行版本控制脚本,并确定我是否正在使用脚本运行更改的HTML代码? 可以使用一个脚本来完成此操作,该脚本可以读取缓存中的HTML代码并生成某种哈希标签,然后将该哈希标签发送回服务器,并与发送给客户端的代码进行比较吗? 问题答案: 是的,从理论上讲,站点可以推断出各种情况下脚本的存在。 这不是万无一失的,通常对于站点的可忽略的“威胁”来说是

  • 问题内容: 我的问题与此相似:如何检测我的shell脚本是否正在通过管道运行?。区别在于我正在使用的Shell脚本是用Node.js编写的。 假设我输入: 然后,我怎么能得到的价值的? 我已经阅读了Unix和Node:管道和流,但这似乎只能提供异步解决方案(除非我误会了)。我正在寻找一个同步解决方案。同样,通过这种技术,检测脚本是否正在通过管道传输似乎不是很简单。 TL; DR我的问题有两个方面: