Ich möchte ein Skript erstellen, das ausgeführt wird, wenn eine Zsh-Instanz gestartet wird, aber nur, wenn die Instanz:
- Nicht anmelden.
- Interaktiv
Ich glaube, ich kann zu Recht sagen, dass .zshrc
Läufe für alle interaktiven Shell-Instanzen .zprofile
und .zlogin
für alle Login-Shells ausgeführt werden und .zshenv
in allen Fällen ausgeführt werden.
Der Grund, warum ich dies tun möchte, besteht darin, zu überprüfen, ob ein vorhandener ssh-Agent ausgeführt wird, und ihn in der neu geöffneten Shell zu verwenden, falls vorhanden.
Ich kann mir vorstellen, dass alle durchgeführten Tests am besten platziert werden .zshrc
(da dies eine interaktive Shell garantiert) und das von dort aufgerufene Skript "Nicht-Anmeldeereignis" aufgerufen wird.
Ich möchte wahrscheinlich zuerst überprüfen, ob die neue Shell bereits als Teil einer vorhandenen Remote-SSH-Sitzung ausgeführt wird, bevor ich auf den ssh-Agenten teste, aber ich habe dieses SE-Rezept für diesen Zweck gefunden.
Ich wähle Zsh, da es die Schale ist, die ich bevorzuge, aber ich stelle mir vor, dass jede richtige Technik, um dies zu tun, ähnlich auf andere Schalen angewendet wird.
-o
Optionen bemerkt , aber ich dachte, sie wären Optionen, die so eingestellt werden konnten, dass sie die Standardeinstellungen überschreiben, dh das Verhalten erzwingen , anstatt die tatsächliche Situation abzufragen. Liege ich falsch?[[ -o opt ]]
prüft obopt
gesetzt ist. Ich kann nicht verstehen, warum es nur dann funktioniert, wenn die Option auf die eine und nicht auf die andere Weise eingestellt ist..zshrc
indem Sie dieinteractive
Option festlegen..zshrc
wird beim Start gelesen, wenn die Shell interaktiv ist. Es kann von jemandem gelesen werden, der es tutsource ~/.zshrc
.login
Option.zshrc
aktivieren, verhalten sich alle nach dieser Änderung gestarteten interaktiven Shells so, als wären sie das Ergebnis einer Anmeldung, oder? dh das Verhalten wird erzwungen - in Wahrheit handelt es sich nicht wirklich um Login-Shells und sie verhalten sich nur so, weil sie von der Autorität der Optionseinstellung dazu aufgefordert wurden?