Unterschiedliche BASH-Eingabeaufforderung

0

Dies ist etwas kosmetisch (und trivial), aber ich nehme an, dass es für andere als mich nützlich sein kann. Ich habe mit der Variablen $ PS1 in meinem ~ / .bashrc herumgespielt und mich gefragt, ob es eine Möglichkeit gibt, die erste Eingabeaufforderung geringfügig von jeder anderen Eingabeaufforderung zu unterscheiden. Genauer gesagt, bis jetzt habe ich:

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\]'

Ich möchte jedoch nicht, dass die neue Zeile am Anfang bei der ersten Eingabeaufforderung angezeigt wird (und ich könnte dies erweitern, damit die erste Eingabeaufforderung weitere Informationen usw. enthält). Ich benutze Gnome-Terminal, wenn das einen Unterschied macht.

Ist das überhaupt möglich? Und wenn ja, wie?

apottere
quelle
Ich antwortete a ähnliche Frage mit einer zu raffinierten Variation von Gary Johns Antwort.
chepner
Das würde funktionieren, aber ich möchte immer noch, dass mein PROMPT_COMMAND für andere Teile von $ PS1 funktioniert.
apottere

Antworten:

1

Eine Möglichkeit, dies zu tun, ist die Verwendung von PROMPT_COMMAND von bash. Sie könnten beispielsweise Folgendes in Ihre ~ / .bashrc einfügen (oder es in der Befehlszeile ausführen, während Sie experimentieren).

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
garyjohn
quelle
Dies ist, was ich getan habe, aber stattdessen habe ich gerade eine Variable in meine $ PS1 eingefügt, die für die zweite Eingabeaufforderung festgelegt wird und dann bestehen bleibt. Vielen Dank!
apottere
0

Wenn Sie möchten, dass einige Zeichen vor der ersten Eingabeaufforderung und nie wieder ausgegeben werden, warum dann nicht einfach? .bashrc sie ausgeben?

Scott
quelle
Der OP wollte weniger Zeichen in der ersten Eingabeaufforderung, d. h. keine neue Zeile am Anfang.
garyjohn