스크립트 내에서 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
이렇게 하면 활성 세션 내에서 프롬프트를 전환할 수 있습니다.