Ich bin nicht zu 100% sicher, dass ich genau verstehe, wonach Sie fragen, und leider habe ich bashim 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_commandist 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 bashzu startende Interaktive ihn findet und ausführt. (Wenn Sie beispielsweise ausführen set_up_cmd ls –l, wird der nächste bashausgeführt ls –l.) history –sStellt 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 .bashrcVerarbeitung wahrscheinlich abgebrochen und das .bash_initial_commandLö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_commandeinen 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_commandDateinamen einfügen.
Umso wichtiger ist es natürlich, dass Ihr Home-Verzeichnis nur von Ihnen selbst beschreibbar ist.
history –sfunktioniert.bash_profile.