微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是.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再次递增。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐