如何在 bash 脚本中更新提示符 PS1

如何在 bash 脚本中更新提示符 PS1

我想更新脚本内的 bash 提示符。本质上,我必须使用 VPN 在另一台计算机上远程工作,并希望它能够通过 bash 提示符反映出来。不幸的是,我在 PS1 中所做的任何更改都不会在 bash-shell 中更新。

我的脚本中更改 PS1 的部分如下:

    # ...

    __RESULT=${__RESULT,,} 

    # CONDITION: set prompt    
    PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    case $__RESULT in    
        *enabled* | *enable* | *connected* | *connect*)    
            PS1='(gp on) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '    
            ;;
    esac
    export PS1

但是,它不起作用。我找到了另一个问题,建议设置PROMPT_COMMAND.我已遵循这些建议,但它不起作用。另外,我担心这个变量可能已经被另一个应用程序使用,我不想覆盖它。所以第二个版本:

    __RESULT=${__RESULT,,}

    # CONDITION: set prompt
    function gp_set_prompt {
        PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
        case $__RESULT in
            *enabled* | *enable* | *connected* | *connect*)
                PS1='(gp on) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
                ;;
        esac
        export PS1
        set_conda
    }    
    export PROMPT_COMMAND=gp_set_prompt

此时,我不太确定我还能做什么。有什么帮助吗?谢谢。

答案1

我将它作为别名粘贴在我的 .bashrc 中

...
alias shortprompt="export PS1=\"\\[\\e[1;36m\\]\\W\\[\\e[1m\\] ~> \\[\\e[0m\\]\""
alias longprompt="export PS1=\"\\[\\e[1;36m\]\\\\[$(tput bold)\\\\]\\w> \\[\\e[0m\\]\""
...

请记住在需要实际“\”的地方加倍“\”。

要在同一会话类型中使用:

source ~/.bashrc

这将允许您在活动会话中切换提示。

相关内容