/ bin / bash的进程数应为1时为2

时间:2019-02-21 00:44:41

标签: bash

我正在使用Tilix。当我打开一个新终端时,它会在~/目录中打开(有时我需要10层)。

我想到了以下代码(将其放入我的~/.bashrc文件中):

function cd() {
    builtin cd $1 && pwd > ~/.last_dir
}

if [ ! -f ~/.last_dir ]
then
    pwd > ~/.last_dir
else
    cd $(cat ~/.last_dir)
fi

function end() {
    if [ -f ~/.last_dir ]
    then
        pid_n=$(pgrep -c bash)

        echo $pid_n > ~/test.txt

        if [[ $pid_n -eq 1 ]]
        then 
            rm ~/.last_dir
        fi
    fi
}

trap end EXIT

问题是:当我只有一个终端打开并执行exit时,我得到文件~/test.txt的值为2(如果我有2个终端打开并且我关闭了一个终端,我得到了3,依此类推。)

当我在终端中执行pgrep -c bashps -C bash --no-headers | wc -l时,我会得到正确的数字,这很奇怪。

如果有人可以帮助我,那就太好了!

规格

  • 发行版:Ubuntu 18.04.2 LTS
  • Tilix版本:1.7.7-1ubuntu2

1 个答案:

答案 0 :(得分:4)

bash在command substitution中执行$()的{​​{3}},这是您看到的额外bash流程。