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が実行中であると誤って表示されます。

関連情報