Ab November 2014 werden die neuesten Versionen der startxwinAnwendung , xinitum 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
startxwinErstellt eine neue .Xauthorityund eine aufgerufene Datei .serverauth.1234( 1234ändert sich bei jedem Start von X)
startxwin Richtet einige Client- und Serverparameter ein
startxwinAufrufe xinitmit 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
xinitstartet 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,
xinitwird der X-Server heruntergefahren. Wenn wir Schritt 6 vermeiden, müssen wir dies auch vermeiden
Es ist möglich , läuft XWin.exedirekt aus einem Bash Login - Shell, ohne die umliegenden Aufgaben, startxwinund xinitauszuführen. Der Hauptvorteil davon ist, dass es sich so verhält, wie wir es wollen: Der X-Server startet und läuft weiter. Da .Xauthoritybeim 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, xinitaber 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 startxwinruft das Skript XWin.exedirekt 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 xinitbeenden kann).
exec sleep infinity