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

이렇게 하면 활성 세션 내에서 프롬프트를 전환할 수 있습니다.

관련 정보