PS1 适用于 Bash + Korn

PS1 适用于 Bash + Korn

我正在尝试为 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。

相关内容