我想在我的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实例时运行两次?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)