2016-10-13 1 views
1

Hier ist meine PS1:Bash: reevaluate PS1 ohne Wagenrücklauf

export PS1='\[email protected]\h:\w\$ ' 

die wie folgt aussieht:

[email protected]:~/ $ 

I gebunden haben Alt + {Links, Rechts} Pfeil gebieten, daß die aktuelle ändern Arbeitsverzeichnis:

bind -x '"\e[1;3D":pushd . > /dev/null && cd ..' 
bind -x '"\e[1;3C":popd > /dev/null' 

Dies funktioniert, aber das aktuelle Arbeitsverzeichnis in PS1 nicht, da kein Wagen retur ausgewertet n ist eingegeben. Gibt es eine Möglichkeit, Bash zu zwingen, PS1 in der Schlange neu zu bewerten?

+1

Sie wollen es die Aufforderung erneut anzuzeigen, obwohl Sie nicht ausgeführt haben Ein Kommando? – Barmar

+0

Ich habe einen Befehl durch Bind ausgeführt. –

+0

Was passiert, wenn Sie "& echo -n" "' am Ende Ihrer Bindung hinzufügen? – xxfelixxx

Antwort

0

zusammen mit der akzeptierten Antwort von in-bash-how-do-i-bind-function-key-to-a-command Folgen, es sieht aus wie die -x Entfernen und Hinzufügen ein \n am Ende sollte es tun:

bind '"\e[1;3D":"pushd . >/dev/null && cd .. && echo\n"' 
bind '"\e[1;3C":"popd > /dev/null && echo -n\n"' 
+0

Es tut nicht wirklich, was ich will, weil es den Befehl anzeigt und dann einen Wagenrücklauf hinzufügt. Aber ich möchte das tun, ohne den Befehl anzuzeigen und einen Wagenrücklauf hinzuzufügen. Ich möchte den Wechsel aus ästhetischen Gründen inline machen. –

+0

Danke, behoben. Ich konnte keine andere Möglichkeit finden, bash dazu zu bringen, die $ PS1-Eingabeaufforderung erneut auszugeben. – xxfelixxx

+0

ich auch nicht, deshalb frage ich;) –