Eine Einstellung, den chdir-Wert, aus dem GNU-Bildschirm holen

693
dlamblin

Ich habe mit screen‚s chdirBefehl ein neues Arbeitsverzeichnis für neue Bildschirmfenster zu setzen, dazu später mehr. Was ich tun muss, ist herauszufinden, was die Einstellung war, bevor ich sie einstelle, damit ich sie zurücksetzen kann. Ich kann dies experimentell tun, indem ich eine neue Sitzung beginne und aussehe, $PWDaber ich scheine das nicht konkret zu machen, so dass ich den Wert in ein Skript packen und speichern kann. Ich habe das Gefühl, es gibt wahrscheinlich einen Befehl in der sehr detaillierten Manpage, der dies bewerkstelligen wird, aber ich habe ihn noch nicht gefunden.

Um zu erklären, was ich gerade mache, ist dies besonders wichtig:
Ich habe ein Skript, das ungefähr vier Prozesse parallel startet, und es ist sehr praktisch, sie jeweils in einem eigenen screenFenster zu starten . Im Bash-Skript lässt sich leicht feststellen, dass das Skript innerhalb screendieses Tests ausgeführt wird: Es if [[ $TERM =~ screen* ]]; thengibt andere Möglichkeiten, aber diese ist in Ordnung. Im Skript kann ich es dann ausführen screen -x -X screen process1. Dies hängt mit der aktuellen Sitzung im Mehrbenutzermodus zusammen und fordert Sie auf, eine neue zu öffnenscreenFenster, in dem der Prozess ausgeführt wird. Es ist innerhalb des Skripts notwendig, da es ohne -x klagen wird, dass der aktuelle Befehl nicht in einem Terminal ausgeführt wird. Dies ist ungefähr richtig und nicht interaktiv. In jedem Fall muss der Prozess1 in einem bestimmten Pfad ausgeführt werden. Nicht nur eine, sondern eine von vier oder fünf, bei denen verschiedene Versionen von process1 vorhanden sind. Ich führe das Skript von diesem Pfad aus. Aber screenoft wird nicht von diesem Pfad aus begonnen, so dass Process1 in einem neuen Arbeitsverzeichnis beginnt, das sich auf dem Startort befindet screen. Kein Problem, einfach screen -x -X chdir $PWDvor dem Start von process1 (2, 3 und 4) ausführen und schon sind Sie auf dem richtigen Weg. Sie haben jedoch screenden Standardarbeitspfad für ein neues Fenster dauerhaft geändert. Dies wird den Benutzer (mich und einige Kollegen) aufregen. Es sollte also kein Problem gebenscreen -x -X chdir $oldCHDIR vor dem Beenden . Ich kann jedoch nicht herausfinden, was $oldCHDIRwar, und ehrlich gesagt könnte es alles sein, nichts so einfaches wie es definitiv ist $HOME. Wenn Sie immer noch lesen und sich fragen, was meine Frage war, war es die im ersten Absatz. Wie kann ich die screenaktuelle chdirEinstellung herausfinden ?

0
Warum nicht vor dem Wechsel eine Subshell starten? Ignacio Vazquez-Abrams vor 12 Jahren 0
Beim Starten einer Subshell können Sie das Verzeichnis in der Subshell ändern und den Bildschirm in Ruhe lassen. Ignacio Vazquez-Abrams vor 12 Jahren 0
Ich würde also Folgendes nennen: `screen -x -X screen bash -c 'cd' $ PWD '; process1'. Das würde funktionieren. Es ist ein Workaround, um die `chdir`-Einstellung herauszufinden, die meiner Meinung nach irgendwo möglich sein sollte. dlamblin vor 12 Jahren 0
Natürlich wird jetzt niemand die eigentliche Frage beantworten. Deshalb sollten Sie sich niemals erklären. Ich möchte nicht wirklich dieses Problem lösen. Als eine Frage möchte ich wissen, ob ich eine Einstellung wie "chdir" von "screen" erhalten kann. Die Antwort kann ja sein, hier wie oder nein. Allzu oft bekomme ich diese: Warum nicht etwas ganz anderes machen? Das ist gut, wenn es einen guten Grund gibt. In diesem Fall wird jedoch der Startvorgang für jeden Prozess verlangsamt und es wird mehr Speicher benötigt. dlamblin vor 12 Jahren 0

0 Antworten auf die Frage