.profile
다음과 같은 사용자 정의 스크립트 가 있습니다 .
PS1='\[\033]0;WSL2 Bash\W\007\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[36m\]' # change to green
PS1="$PS1"'bash@bexgboost ' # user@host<space>
PS1="$PS1"'\[\033[31m\]' # change to brownish yellow
PS1="$PS1"'\W' # current working directory
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[35m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function
fi
fi
PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line
PS1="$PS1"'$ ' # prompt: always $
현재 터미널을 실행하면 다음과 같습니다.
스크립트는 다음과 같은 지점 이름을 표시해야 했습니다.
디렉터리 이름의 불일치를 무시합니다.
내가 도대체 뭘 잘못하고있는 겁니까?
답변1
코드의 문제는 18행에 있습니다.
PS1="$PS1"'`__git_ps1`' # bash function
여기서는 함수를 호출하고 __git_ps1
해당 함수를 해당 출력으로 바꿔야 하는 명령 대체(백틱을 사용한 이전 스타일)를 사용하고 있지만 예제 코드에서는 함수 정의를 볼 수 없습니다. 따라서 해당 줄 앞 어딘가에 다음 함수 정의를 추가할 수 있을 것 같습니다.
__git_ps1() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
그런 다음 프로필 파일(-)을 저장하고 소싱 . .profile
하면 작동합니다.
또한 다음은 Ubuntu Server 22.04의 기본 ~/.bashrc
파일(이 경우 대신 이 파일을 편집하는 것을 선호함 .profile
)을 변경하여 원하는 모양과 거의 동일하게 만드는 작업 예입니다. 여기서는 새로운 명령 대체 구문을 사용하고 있습니다 $()
. 그리고 함수는 parse_git_branch()
호출되기 전에 정의됩니다.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
if [ "$color_prompt" = yes ]; then
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]' # green
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]' # yellow
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]' # blue
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]' # purple
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]' # red
PS1="${PS1}\[\033[01;33m\]\$(parse_git_branch)\[\033[0m\]\n" # HERE WE CALL THE FUNCTION THAT PARSE THE BRANCH
PS1="${PS1}\$ "
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
관련 행만 .bashrc
표시됩니다. 기본 상태의 if [ "$color_prompt" = yes ];
경우 .bashrc
.
실제 모습은 다음과 같습니다.
- 참고 저는 Kali Linux 내에서 GNOME 터미널을 사용하여 Ubuntu Server에 연결하고 있는데 이것이 Ubuntu에서 동일한 코드로 생성되는 색상과 약간 다른 이유입니다.
참고자료:
- 우분투에 물어보세요:모든 터미널 색상을 표시하는 스크립트
- 코드월:bash 프롬프트에 git 브랜치 이름 추가