Festlegen von Umgebungsvariablen in .screenrc

8

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 :

zu setzen %Vor%

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?

    
ajwood 20.12.2012, 14:15
quelle

4 Antworten

5

Ich würde es stattdessen mit einer Bash-Magie machen. Versuchen Sie, etwas zu Ihrer ~/.screenrc -Datei hinzuzufügen:

%Vor%

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: Ссылка

    
Nathan S. Watson-Haigh 12.02.2014 03:04
quelle
1

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.

    
Keith Thompson 11.02.2014 15:28
quelle
1

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.

    
Stephan Richter 14.02.2017 17:26
quelle
0

Für mich habe ich nur die Umgebung in ~/.bash_profile oder ~/.bashrc

festgelegt %Vor%

Es hat funktioniert, genieße es.

    
Mohanson 15.02.2017 06:33
quelle

Tags und Links