我经常在vim编辑会话中input“:sh”来执行某些操作,然后退回到编辑器。 有时我会试图退出编辑器,忘记我没有进行任何编辑,我的terminalclosures了!
为了避免这种情况,我在我的.bashrc中添加了一些代码来保留嵌套的子shell的数量,并在提示中显示出来。
这里是代码:
在Ubuntu上查找并删除DOS行结尾
不能在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里面
~$ echo $SHLVL 1 ~$ bash -c 'echo $SHLVL' 2
然后在.bashrc再次递增。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。