Wie verwende ich die Quelle in einem Bash-Skript, um die Terminal-Eingabeaufforderung zu ändern?

965
qubodup

Ich muss in der Lage sein, ein Skript in ~ / .local / bin / (das Teil von $ PATH ist) zu verwenden, um die Eingabeaufforderung schnell zu ändern.

Das gewünschte Ergebnis kann erreicht werden, indem Sie Folgendes in einer Konsole ausführen:

 echo PS1='$\ ' > /tmp/ps1 && source /tmp/ps1 && rm /tmp/ps1 

Beim Einfügen in ein Skript hat dies jedoch keine Auswirkungen mehr auf die Konsole, in der es ausgeführt wird.

. .local/bin/bigfont funktioniert, aber das Schreiben des Pfads zum Skript (oder etwas anderes als den Skriptnamen) sollte vermieden werden.

Gibt es eine Möglichkeit, dies mit einem Skript zu tun? Wenn nicht, gibt es eine einfache Möglichkeit, dies mit C zu lösen?

Vielen Dank!

0
Zunächst müssen Sie keine Datei schreiben und erzeugen, um eine Umgebungsvariable zu ändern. Sie können PS1 einfach einstellen, indem Sie `PS1 = '$ \'` ausführen. Sie könnten `PS1 = '$ \'` in ein Skript einfügen und dieses als Quelle verwenden. Alternativ können Sie anstelle eines Skripts eine Funktion verwenden, die nicht benötigt wird, sondern in der aktuellen Umgebung ausgeführt wird, um Umgebungsvariablen wie PS1 festzulegen. Sie können dies in einem Skript nicht tun, ohne es zu beschaffen, da das Skript als untergeordneter Prozess Ihrer Shell ausgeführt wird und untergeordnete Prozesse keinen Einfluss auf die Umgebung des übergeordneten Elements haben. garyjohn vor 8 Jahren 1

2 Antworten auf die Frage

0
qubodup

Es gibt einen Kompromiss, der den Eindruck erweckt, als würden Sie ein Skript verwenden.

Schreibe eine Bash-Funktion:

function miniprompt { PS1='$ ' ~/.local/bin/somescript # or just somescript if it's in $PATH } 

Um sicherzustellen, dass die Funktion immer verfügbar ist, legen Sie sie in ~/.bashrcund ~/.bash_profile(oder einfach nur, ~/.bashrcwenn sie ~/.bash_profiletrotzdem geladen wird ).

garyjohn hat klargestellt, dass die frage eine falsche Annahme enthält, die sourceverwendet werden muss, und klargestellt, dass man sie stattdessen PS1='$ 'direkt setzen könnte. Vielen Dank!

0
Vinayak Gadkari
function myprompt { export PS1=<set PS1 appropriately> }  alias setprompt="PROMPT_COMMAND='myprompt'" 

Das Ausführen von setprompt sollte Ihre Eingabeaufforderung festlegen.