Ich versuche eine .screenrc-Datei zu schreiben, die ich für die Entwicklung eines bestimmten Projekts verwenden kann - Es wird ein paar Bildschirme starten, cd an die richtigen Stellen, die richtigen Dateien in einem Editor öffnen, und setze einige Umgebungsvariablen, die zum Testen benötigt werden.
Ich kann die Umgebung nicht einrichten. Ich habe versucht, dies in '~/.screenrc
:
Das funktioniert nicht, und ich denke, das Problem ist, dass nach screen
sets PATH
die regulären Shell-Initialisierungs-Skripte einspringen und es bei mir ändern.
Ich möchte die regulären Shell-Init-Skripte nicht deaktivieren. Gibt es eine Möglichkeit, den Bildschirm setenv
zu machen, nachdem die Shell initialisiert wurde? Oder alternativ kann Bildschirm eine Variable auf schreibgeschützt setzen?
Ich würde es stattdessen mit einer Bash-Magie machen. Versuchen Sie, etwas zu Ihrer ~/.screenrc
-Datei hinzuzufügen:
Weitere Details und die Einstellung für neu erstellte Fenster mit Ctrl-a Ctrl+c
oder Ctrl-a c
finden Sie in meiner Antwort auf einen anderen Beitrag: Ссылка
Es gibt keine Möglichkeit, dass screen
die Umgebungsvariablen eines Shell-Prozesses nach dem Start dieses Prozesses ändern kann, noch gibt es eine Möglichkeit, eine Umgebungsvariable schreibgeschützt zu machen (Werte werden im Speicher jedes Prozesses und in jedem Prozess gespeichert) hat vollen Zugang zu ihnen).
(Nun, es könnte eine hässliche systemspezifische Art geben, dies zu tun, aber es ist die Art von Dingen, die Unix-ähnliche Systeme verhindern sollen.)
Sie müssen das Initialisierungsskript Ihrer Shell ändern, damit es den vorhandenen Wert von $PATH
beibehält und möglicherweise hinzufügt, anstatt es auf einen neuen Wert zu setzen und seinen vorhandenen Wert zu ignorieren.
Wenn Sie dies bedingt tun möchten, können Sie das Vorhandensein von $STY
testen, das nur dann gesetzt wird, wenn die Shell (oder ein anderer Prozess) unter screen
läuft.
Auch der Befehl screen
setenv
scheint das Zeichen ~
nicht zu erkennen. Ich habe versucht, ein ähnliches setenv
zu einem temporären screenrc
hinzuzufügen, und $PATH
enthielt ein Literal ~
-Zeichen. bash
scheint die ~
-Syntax in $PATH
zu erkennen, andere Shells nicht. Ersetze ~
durch $HOME
, was screen
erkennt.
für mich die Linie
%Vor%in der screenrc-Datei hat es geschafft.
Ich denke, die Erweiterung von '~' nach '/ home / someuser' ist bash-spezifisch und wird nicht innerhalb des screenrc funktionieren.
Tags und Links gnu-screen