スクリプト内で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
これにより、アクティブセッション内でプロンプトを切り替えることができます。