작동 중인 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를 실행 중이라고 잘못 표시합니다.