내 홈 디렉터리의 .bashrc에 다음 프롬프트 코드가 있습니다.
PS1_TIME='\033[01;31m\]\t \033[01;32m\]'
PS1_USERNAME='\[\e[1;36m\]\u\e[1;37m\]@\e[1;32m\]\h\[\033[00m\]'
PS1_LOCATION='\[\033[01;34m\]\w\[\033[00m\]'
PS1=$PS1_TIME$PS1_USERNAME':'$PS1_LOCATION'\n\$ '
PS2='\[\033[01;36m\]>'
또한 /etc/bashrc에 다음 구성이 있습니다.
# are we an interactive shell?
if [ "$PS1" ]; then
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*|vte*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
PROMPT_COMMAND="__vte_prompt_command"
else
PROMPT_COMMAND='printf "1\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
screen*)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "2\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
;;
esac
fi
결과적으로 내 쉘 프롬프트는 두 가지로 구성됩니다. /etc의 프롬프트가 내 기본 설정과 병합되었습니다.
[PS1 from ect][PS1 from home dir]:
내 홈 디렉터리가 기본 디렉터리를 재정의하도록 로컬 설정을 어떻게 변경합니까?
등의 파일을 변경하고 싶지 않거나 이 작업을 수행해야 합니까?
답변1
PS1
목적 이 PROMPT_COMMAND
다른 두 가지 변수입니다. 그리고,Bash 매뉴얼에 나와 있듯이:
PROMPT_COMMAND
$PS1
설정된 경우 이 값은 각 기본 프롬프트( )를 인쇄하기 전에 실행되는 명령 으로 해석됩니다 .
이는 PROMPT_COMMAND
프롬프트로 사용하기 위한 것이 아니라 실제 프롬프트가 인쇄되기 전에 실행되는 명령으로 사용됩니다.
이 문제를 해결하려면 값을 편집하지 않으려는 경우 로컬에서 null 값을 설정 해제하거나 할당 /etc/bashrc
해야 합니다 .PROMPT_COMMAND
.bashrc
unset PROMPT_COMMAND
# or
PROMPT_COMMAND=
대화형 세션의 예( foobar$
초기 프롬프트):
foobar$ printf 'PROMPT_COMMAND: [%s]\nPS1: [%s]\n' "$PROMPT_COMMAND" "$PS1"
PROMPT_COMMAND: [printf foo]
PS1: [bar$ ]
foobar$
설정되지 않음 PROMPT_COMMAND
:
foobar$ unset PROMPT_COMMAND
bar$
null 값을 할당합니다 PROMPT_COMMAND
.
foobar$ PROMPT_COMMAND=
bar$