2010-11-23 9 views
3

Ich bin eine neue Sitzung von bash starten einen Befehl wie folgt aus:
exec bash --init-file <(cat /etc/profile ~/.bashrc $ANOTHER_SCRIPT) -i
Ich mag würde auch die Aufforderung der neuen Session ändern, ohne dass eine weitere init Datei hinzufügen zu müssen ... I meine beste Wette ist etwas wie folgt:
exec bash --init-file <(cat /etc/profile ~/.bashrc $ANOTHER_SCRIPT; echo "PS1='[TEST] '$PS1") -i
Ich denke, meine Probleme betreffen entkommene Zeichen ... aber ich bin ziemlich ahnungslos darüber, wie man das Problem angehen als mein Etikett auf die Aufforderung voranstellen.Escaping von Zeichen in PS1

Alle Gedanken sind sehr geschätzt,

Andrew

+0

Es ist interessant, dass exec bash --init-file <(cat/etc/profile ~/.bashrc $ ANOTHER_SCRIPT; echo "PS1 = '[TEST]' $ PS1") unterscheidet sich von exec bash --init-file <(cat/etc/profile ~/.bashrc $ ANOTHER_SCRIPT; echo 'PS1 = "[TEST]" $ PS1') – ajwood

+0

Von "quotes'inside'quotes" zu "quotes" innerhalb von "quotes" zu wechseln bricht es! – ajwood

Antwort

3

Dies sollte funktionieren:

exec bash --init-file <(cat /etc/profile ~/.bashrc $ANOTHER_SCRIPT; echo 'PS1="[TEST] $PS1"') -i 
+0

Ich bin auch auf der Suche nach einer Lücke zwischen [TEST] und der bestehenden PS1 ... aber das Zitieren kümmert sich darum. – ajwood

+0

@ajwood: Ich habe meine Antwort basierend auf deinem Kommentar geändert. –

+0

Werfen Sie einen Blick auf den Unterschied besser Ihre Antwort und wie Code in meiner Frage ... Warum macht der Unterschied in der Angebotserstellung einen solchen Unterschied? – ajwood

1

PS1="[TEST] $PS1"

Sie können dies nicht auf der gleichen Linie wie Ihr <(cat ...) Prozess Substitution setzen, da es nur Dateien erwarten ist, sondern in Ihrem ~/.bashrc Datei

+0

Passt das Semikolon nicht? – ajwood