Bash + Korn용 PS1

Bash + Korn용 PS1

작동 중인 bash 쉘에 대한 프롬프트를 설정하려고 하는데 이 특정 시스템도 Korn을 많이 사용합니다.

echo ~/.profile -> export PS1="\[\033[38;5;10m\][\u@\h \W]\$ \[\]"

큰 타격을 받은 경우:

[root@mysystem ~]$ (in green)

코헨에서는:

[033[38;5;10m][u@h W]$ [] (default color)

두 쉘 모두에 대해 올바르게 설정해야 합니다.

답변1

주석을 보면 실행 중인지 확인하려는 것 같습니다. bash이 경우 PS1값을 설정하고 bash그렇지 않으면 으로 설정합니다 ksh.

그것은 간단합니다:

if [ -n "$BASH_VERSION" ]; then
    # set PS1 for bash
else
    # set PS1 for ksh (or non-bash in general)
fi

[ -n "$BASH_VERSION" ]$BASH_VERSION비어 있지 않으면 참이고, 현재 쉘이 이면 참입니다 bash.

답변2

코살로난다의 답변괜찮습니다. 그러나 ksh를 호출하기 전에 누군가 이 작업을 수행하기로 결정한 경우 export BASH_VERSION(따라서 테스트 부정 행위) 다음 값을 테스트할 수 있습니다 $0.

case "$0" in
  (*ksh)  PS1="ksh version"     ;;
  (*bash) PS1="bash version"    ;;
  (*)     PS1="default version" ;;
esac

이 테스트는 오류가 없는 것이 아닙니다. ln -s /bin/bash /tmp/bashksh그런 다음 을 호출 하면 /tmp/bashksh위 코드는 ksh를 실행 중이라고 잘못 표시합니다.

관련 정보