Ab November 2014 werden die neuesten Versionen der startxwin
Anwendung , xinit
um die Cygwin / X - Server zu starten, die tatsächlich aufgerufen wird XWin.exe
. Der Prozess läuft ungefähr so ab:
- Du rufst an
startxwin
startxwin
Erstellt eine neue .Xauthority
und eine aufgerufene Datei .serverauth.1234
( 1234
ändert sich bei jedem Start von X)
startxwin
Richtet einige Client- und Serverparameter ein
startxwin
Aufrufe xinit
mit den Client- und Serverparametern, einschließlich einiger optionaler Shell-Skripte und eines Verweises auf die Auth-Datei.
xinit
Startet den X-Server und führt einige der rc-Skripte aus
xinit
startet das client (normalerweise xterm
) oder client rc script. Das wollen wir vermeiden
- Wenn Sie den Client schließen oder das Client-RC-Skript beendet ist,
xinit
wird der X-Server heruntergefahren. Wenn wir Schritt 6 vermeiden, müssen wir dies auch vermeiden
Es ist möglich , läuft XWin.exe
direkt aus einem Bash Login - Shell, ohne die umliegenden Aufgaben, startxwin
und xinit
auszuführen. Der Hauptvorteil davon ist, dass es sich so verhält, wie wir es wollen: Der X-Server startet und läuft weiter. Da .Xauthority
beim Start keine Datei übergeben wird, kann auf Ihrem X-Server kein lokaler Prozess eine Verbindung herstellen, was unsicher ist.
Glücklicherweise ist es das xinit
, was die meisten Dinge, die wir nicht wollen, bewirken. Es gibt einen schnellen Hack, der umgeht, xinit
aber die verbleibenden Elemente startxwin
, die sich auf den Server selbst beziehen, beibehält.
TL; DR: In startxwin
, es gibt eine Zeile in der Nähe des Bodens, die lautet:
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
Ändern Sie diese Zeile in:
eval \"$server\" $display $serverargs
Von nun an startxwin
ruft das Skript XWin.exe
direkt auf und nicht mehr xinit
. Offensichtlich werden dadurch alle Client-RC-Skripte deaktiviert, aber wir wollten diese überhaupt nicht. Dies bedeutet auch, dass X weiter ausgeführt wird, ohne dass ein Client-Prozess am Leben bleiben muss (dh ihn nicht xinit
beenden kann).
exec sleep infinity