Ich habe absolut keine Erfahrung damit TermRecord
, meine Antwort basiert auf einer vernünftigen (ich hoffe es) Vermutung, was passiert.
Es sieht wieder wie eine TermRecord
Quelle .bashrc
aus, oder es ist wahrscheinlicher, dass es eine andere bash
ausführt, die die Datei enthält. Ich gehe von Letzterem aus . Trotzdem läuft es TermRecord
wieder, nochmal eine bash
Quelle .bashrc
und so weiter.
Wenn Sie sich nicht mehr anmelden können, lesenbash_profile
bashrc
Sie Login ohne Ausführen von oder . Ich würde versuchen, ssh -t username@hostname /bin/sh
meine .bashrc
von dort aus zu reparieren .
Damit es wie erwartet funktioniert, müssen Sie einen Weg finden, die Ausführung zu unterdrücken, TermRecord
wenn sie bereits vorhanden ist TermRecord
. Der beste Weg wäre, wenn das Programm der Umgebung eine Variable hinzufügt, damit Sie sie erkennen können. Ich kann nicht finden, ob es eine Variable setzt oder nicht.
Sollte dies nicht der Fall sein, können Sie dies selbst tun. Anstatt
TermRecord -o ss.html
in deiner .bashrc
Verwendung so etwas:
[ -z "$TR_PPID" ] && { export TR_PPID=$$; TermRecord -o ss.html; }
Das bedeutet: Wenn die Variable leer ist, setzen Sie sie auf die Shell-PID und führen Sie sie aus TermRecord
. sonst nichts machen (weiter zur nächsten Zeile).
Anmerkungen:
- Stellen Sie sicher, dass die benannte Variable
TR_PPID
nicht vonTermRecord
irgendetwas anderem verwendet wird. Ich habe diesen Namen gemacht (von "TermRecord Parend PID"), es kann jedoch zu einer Kollision kommen. - Hardcoded
-o ss.html
kann zu Problemen führen, wenn Sie sich mehrmals anmelden. - Wenn
TermRecord
ausgeführt wird, wird der Rest.bashrc
von dem Äußeren erstbash
spät als beendetTermRecord
beschafft. Die innerebash
Quelle wird die Datei selbstständig beziehen. - Um Verschachtelungsprozesse zu vermeiden, sollten Sie das äußere
bash
mit ersetzen,TermRecord
anstatt einen separaten Prozess zu erstellen. es kann mit gemacht werdenexec TermRecord -o ss.html
. In diesem Fall möchten Sie wahrscheinlich, dass die gesamte Zeile ganz am Anfang Ihrer Zeile steht.bashrc
. Nun würde die Variable "TermRecord PID" bedeuten, alsoTR_PID
wäre der Name besser.
Mögliche (?) Alternative: TermRecord
Als Login-Shell verwenden.
- Nur wenn es eine Login-Shell unterstützt (ich weiß das nicht); Andernfalls kann dies zu Problemen führen (aber möglicherweise würde dies durch einen benutzerdefinierten Wrapper behoben). Experimente zum Ändern der Login-Shell (siehe
chsh
) sollten durchgeführt werden, ohne die alte Shell oder sogar eine zusätzliche "Notfall-Shell" zu verlassen. Wenn Sie sich selbst ausschließen und sich nicht neu anmelden können, ist die alte Shell noch aktiv und Sie können sie beheben. - Dies erfordert möglicherweise eine Bearbeitung
/etc/shells
. - In diesem Fall sollten Sie nicht starten
TermRecord
von Ihrem.bashrc
überhaupt.