축약된 경로를 사용하십시오.

축약된 경로를 사용하십시오.

나는 기본적으로 내 PS1을 git 저장소에서 다음과 같이 보이게 하려고 노력하고 있습니다.

$ ~/Projects/Blah (master):

또는 Git 저장소에 있지 않은 경우 다음과 같이 표시하고 싶습니다.

$ ~/Projects/Blah:

이것이 나의 현재 PS1입니다:

export PS1="$ \w \$(__git_ps1): "

git repo 출력에서는 잘 작동하지만 문제는 내가 git repo에 없으면 출력이 다음과 같다는 것입니다.

$ ~/Projects/Blah :

그것이 git 저장소가 아니고 거기 공간을 정말로 원하지 않는다면 PS1에서 그것을 지정할 수 있는 방법이 있습니까?

답변1

동적으로 설정된 프롬프트를 사용합니다 function. 이것은 내 개발 환경 초기화 스크립트에 정의된 내 특정 기능입니다.

function prompt_cmd
{
  # Tell the terminal application (using escape sequences) what the CWD is.
  # (this comes from /etc/bashrc)
  update_term_cwd

  if [[ "$ORIG_PS1" == "" ]]; then
    export ORIG_PS1=$PS1
  fi

  if [[ "$CURRENT_PROJECT" == "" ]]; then
    export PS1=$ORIG_PS1
  else
    if [[ "$PWD" == "$DEV_HOME/projects/$CURRENT_PROJECT"* ]]; then
       PWD_COLOR=''
    else
       PWD_COLOR='\[\e[0;31m\]'
    fi
    export PS1="\[\e[0;32m\]$CURRENT_PROJECT\[\e[m\]:$PWD_COLOR\W\[\e[m\]$ "
  fi
}

(내가 참여하고 있다고 생각하는 프로젝트에서 벗어나면 힌트의 경로 부분이 빨간색으로 설정됩니다!)

...그리고 bash에게 이 함수를 사용하라고 지시합니다:

export PROMPT_COMMAND=prompt_cmd

답변2

PS1제가 이런 일을 하는 것은 디렉터리를 변경할 때 값을 변경하는 것입니다. 이것은 chpwd명령을 실행하는 zsh에서는 사소한 일입니다. bash에서 수행할 수 있습니다.cd주변과 친구들의 래퍼 정의.

cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
  if git rev-parse --show-toplevel 2>/dev/null >/dev/null; then
    PS1='$ \w $(__git_ps1): '
  else
    PS1='$ \w: '
  fi
}

답변3

결국 이걸 사용하게 됐어요.git-prompt.sh문서. 작동시키는 단계:

  1. .git-prompt.sh홈 디렉터리( )에 라는 파일을 만들고 ~/.git-prompt.sh위 링크의 코드를 해당 파일에 복사합니다.
  2. .bash_profile또는 파일 에 .bashrc다음 줄을 추가합니다.source ~/.git-prompt.sh
  3. PS1을 다음으로 변경하십시오.PS1='\n$ \w$(__git_ps1 " (%s)"): '

답변4

# .bashrc example edits to PS1 for git

축약된 경로를 사용하십시오.

    # -- With color:
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[01;33m\]$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")")\[\033[00m\]\$ '

    # -- Without color:
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")")\$ '

요청대로:

    # -- With color:
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;33m\]$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")")\[\033[00m\]: '

    # -- Without color:
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$([[ "$(git branch --show-current 2>/dev/null)" == "" ]] || echo " ("$(git branch --show-current 2>/dev/null)")"): '

KDE Plasma Bash Konsole에서

관련 정보