Ich bin nicht zu 100% sicher, dass ich genau verstehe, wonach Sie fragen, und leider habe ich bash
im Moment keinen Zugriff auf ein System, auf dem es installiert ist , aber vielleicht hilft Ihnen Folgendes. Setzen Sie dies am Ende Ihres .bashrc
:
if [-f ~ / .bash_initial_command]
dann
. ~ / .bash_initial_command
rm ~ / .bash_initial_command
fi
(Wo .bash_initial_command
ist ein beliebiger Dateiname; wählen Sie einen anderen aus, wenn Sie möchten), und schreiben Sie dann ein Skript, das dies ausführt:
(echo "history –s '$ @'"; echo "$ @")> ~ / .bash_initial_command
Das heißt, der Befehl (der dem obigen Skript als Argumente präsentiert wird) wird an einer Stelle abgelegt, an der der nächste bash
zu startende Interaktive ihn findet und ausführt. (Wenn Sie beispielsweise ausführen set_up_cmd ls –l
, wird der nächste bash
ausgeführt ls –l
.) history –s
Stellt einen Befehl in den Verlauf, ohne ihn auszuführen.
Hinweis: Ich weiß nicht, ob das funktionieren wird .bashrc
.
Dies muss verfeinert werden, wenn Sie Befehle mit Anführungszeichen (dh Sonderzeichen in Anführungszeichen) oder Umleitungen ( <
oder >
) verwenden möchten . oder eine Verbindung Befehle (dh enthält ;
, |
, &&
, oder ||
).
Ein kleines Problem: Wenn Sie Ctrl+ Cden Befehl eingeben, wird die .bashrc
Verarbeitung wahrscheinlich abgebrochen und das .bash_initial_command
Löschen der Datei verhindert . Damit können Sie wahrscheinlich umgehen
if [-f ~ / .bash_initial_command]
dann
mv ~ / .bash_initial_command ~ / .bash_initial_command. $$
trap "rm -f ~ / .bash_initial_command. $$" 0
. ~ / .bash_initial_command. $$
rm -f ~ / .bash_initial_command. $$
fi
Dies gibt .bash_initial_command
einen eindeutigen Namen, um Kollisionen zu vermeiden, und sorgt dafür, dass dieser beim Beenden der Shell gelöscht wird.
Wenn Sie in der Lage sein müssen, mehrere davon gleichzeitig zu starten, sollten Sie den Namen "tty" $(basename $(tty))
in den .bash_initial_command
Dateinamen einfügen.
Umso wichtiger ist es natürlich, dass Ihr Home-Verzeichnis nur von Ihnen selbst beschreibbar ist.
history –s
funktioniert.bash_profile
.