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