我想更新脚本内的 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
这将允许您在活动会话中切换提示。