是.bashrc进入一个新的bash实例时运行两次?

是.bashrc进入一个新的bash实例时运行两次?,第1张

概述是.bashrc进入一个新的bash实例时运行两次?

我想在我的bash提示符中显示嵌套的子shell的数量。

我经常在vim编辑会话中input“:sh”来执行某些 *** 作,然后退回到编辑器。 有时我会试图退出编辑器,忘记我没有进行任何编辑,我的terminalclosures了!

为了避免这种情况,我在我的.bashrc中添加了一些代码来保留嵌套的子shell的数量,并在提示中显示出来。

这里是代码:

在Ubuntu上查找并删除DOS行结尾

Bash – 重命名多个文件扩展名

不能在terminalinput长命令

通过脚本将string传递给一个linux cli交互式程序

linux的bash – 从另一个目录中删除一个目录中的所有文件

echo "1: SHLVL=$SHLVL" if [[ -z $SHPID ]] ; then echo "2: SHLVL=$SHLVL" SHPID=$$ let "SHLVL = ${SHLVL:0} + 1" fi echo "3: SHLVL=$SHLVL"

(对于那些可能想知道的问题,testing“-z $ SHPID”确保$ SHLVL不会再次增加,如果我再次在同一个shell中运行“.bashrc”,也许testing一下。)

但是输出如下所示:

lsIDen@morpheus ~ (morpheus) (2) $ bash 1: SHLVL=3 2: SHLVL=3 3: SHLVL=4 lsIDen@morpheus ~ (morpheus) (4) $ ps PID TTY TIME CMD 10421 pts/2 00:00:00 bash 11363 pts/2 00:00:00 bash 11388 pts/2 00:00:00 ps

正如你所看到的,现在在堆栈中有两个bash实例,但是variables$ SHLVL已经增加了两次。 输出结果显示,在这段代码甚至在我的.bashrc中执行之前,SHLVL已经增加了1!

有没有可能使.bashrc得到运行两次,而不看到回声命令的输出?

使用PHP运行Shell脚本

用linux bash脚本清理存档文件

为什么卸载Apache2尝试安装PHP5-CGI?

如何使用Unixsorting从tIE-break组中挑选最高分值

带有反引号的bash命令在xargs里面

每当你启动一个shell时, SHLVL自动增加:

~$ echo $SHLVL 1 ~$ bash -c 'echo $SHLVL' 2

然后在.bashrc再次递增。

总结

以上是内存溢出为你收集整理的是.bashrc进入一个新的bash实例时运行两次?全部内容,希望文章能够帮你解决是.bashrc进入一个新的bash实例时运行两次?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存