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提案に従いましたが機能しません。また、この変数がすでに他のアプリケーションで使用されているのではないかと心配されて上書きしたくありません。 2番目のバージョンは次のとおりです。

    __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\\]\""
...

実際の「\」が必要な場合は、「\」を2回使用する必要があります。

同じセッションタイプ内で使用するには:

source ~/.bashrc

これにより、アクティブセッション内でプロンプトを切り替えることができます。

おすすめ記事