我正在尝试为 bash shell 设置提示,该提示正在运行,但是这个特定的系统也大量使用 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
如果为非空,则为 true,如果当前 shell 为 ,则为 true bash
。
答案2
拘萨罗南达的回答很好,但以防万一有人决定export BASH_VERSION
在调用 ksh 之前这样做(从而欺骗测试),您可以测试以下值$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。