異なる初期BASHプロンプト

異なる初期BASHプロンプト

これはやや表面的な(そして些細な)質問ですが、私以外の人にとっては役に立つかもしれません。私は ~/.bashrc の $PS1 変数をいじっていて、最初のプロンプトを他のすべてのプロンプトと少しだけ異なるものにする方法があるかどうか疑問に思っていました。具体的には、これまでに次のことを試しました。

PS1='\n\[\e[0;37m\][\[\e[0;35m\]\t\[\e[0;37m\]] \[\e[0;36m\]\u@\h \[\e[0;37m\][\[\e[1;34m\]\W\[\e[0;37m\]] \[\e[0;36m\]\$ \[\e[0m\]'

しかし、最初のプロンプトに先頭の改行を表示したくありません (これを拡張して、最初のプロンプトに詳細情報などを含めることもできます)。違いがあるかどうかはわかりませんが、gnome-terminal を使用しています。

これは本当に可能なのでしょうか? もし可能だとしたら、どのようにすればいいのでしょうか?

答え1

これを行う 1 つの方法は、bash の PROMPT_COMMAND を使用することです。たとえば、次のコードを ~/.bashrc に記述します (または、実験中にコマンド ラインで実行します)。

set_ps()
{
    if [ -z "$PSFLAG" ]
    then
        # Set first prompt
        PS1='first prompt: '
        PSFLAG=1
    else
        # Set other prompt
        PS1='other prompt: '
    fi
}
PROMPT_COMMAND=set_ps

答え2

最初のプロンプトの前にいくつかの文字を出力し、それ以降は出力したくない場合は、単に.bashrcそれらを出力してみませんか?

関連情報