Bash提示多个命令替换

时间:2016-08-06 21:48:18

标签: bash

我正在使用以下(简化)函数在.bashrc中设置我的bash提示符:

set_prompts() {

    PS1="\u@\h in \w "
    PS1+="\$(get_git_repo_details)"
    PS1+="\n"
    PS1+="\$(exit_status_prompt)"
}

现在exit_status_prompt会打印一个不同颜色的提示字符,具体取决于$?的值是否为0。

我注意到的是,使用上面的代码,提示字符的颜色永远不会更新。但是,如果我在添加exit_status_prompt的输出之前将$PS1的输出附加到get_git_repo_details,或者根本不附加get_git_repo_details的输出,那么它会更新。

有谁知道造成这种情况的原因是什么?感谢。

编辑:

exit_status_prompt()
{
    if [ $? -ne 0 ]
    then
        highlight 1 "❯ "
    else
        highlight 2 "❯ "
    fi
}

然后highlight函数只使用tput在第二个参数中添加字符串,并在第一个参数中指定颜色。

1 个答案:

答案 0 :(得分:2)

<input type="text" id="zipurl" placeholder="http://"> <button class="loadzipurl">Export Application</button> 中执行任何其他操作之前,您需要致电exit_status_prompt,否则set_prompts将被重置。据推测,$?使用最近执行的命令或分配的退出状态。

exit_status_prompt

我没有使用命令替换,因为我假设您(并且应该)正在运行set_prompts() { esp=$(exit_status_prompt) PS1="\u@\h in \w " PS1+="$(get_git_repo_details)" PS1+="\n" PS1+="$esp" } 作为set_prompts中的第一个命令。