Umgebungsvariable und DOS-Shell

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
User avatar
klark
Member
Member
Posts: 189
Joined: 2003-02-07, 17:34 UTC
Location: Germany, Düsseldorf

Umgebungsvariable und DOS-Shell

Post by *klark »

Ich habe ein interessantes Phänomen beobachtet:

Ich arbeite mit Umgebungsvariablen, die ich auch häufig wechseln muss. Diese setze ich in der bekannten Weise über die Systemeigenschaften.

Üblicherweise öffne ich mir eine DOS-Box über einen Button im TC ("C:\WINNT\system32\cmd.exe", keine Parameter) und arbeite dann in dieser Shell. Wenn ich mir nun über "Set" meine Systemvariablen ansehe, stelle ich fest, dass sie sich nicht geändert haben. Wenn ich den TC einmal schließe und dann wieder öffne und dann wie gewohnt die DOS-Box öffne, finde ich mit "Set" die Variable auch geändert vor.

Mir ist durchaus bewusst, dass man eine DOS-Box schließen und eine neue öffnen muss, um die Änderungen auch zu sehen, aber dass der TC mir über den Button auch nach dem Schließen anscheinend nur die "alte" Instanz liefert, fand ich doch interessant.

Wenn ich übrigens eine DOS-Box über andere Wege ausführe, muss ich den TC nicht schließen.

Ist das ein Bug oder ein Feature?

Viele Grüße,

Marc
#85370
User avatar
Sir_SiLvA
Power Member
Power Member
Posts: 3300
Joined: 2003-05-06, 11:46 UTC

Post by *Sir_SiLvA »

wohl eins der interessanten Windows-Features...
Hoecker sie sind raus!
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2klark
Die Umgebungsvariablen eines jeden Prozesses werden beim Starten eines Prozesses durch den Eltern-Prozess definiert. Somit ist es auch nicht verwunderlich, dass sich die Umgebungsvariablen einer bereits laufenden Total Commander Instanz nicht automatisch aktualisieren.
Möglicherweise gibt es einen Mechanismus, etwa eine Systembotschaft, um Änderungen an dem Systemvariablen automatisch zu übernehmen - ich kenne einen solchen jedoch nicht.
User avatar
Hacker
Moderator
Moderator
Posts: 13068
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

klark,
Soweit ich dich verstanden habe, ist das Problem das, dass der TC nur die Systemvariablen kennt, die bei seinem Start definiert waren, und auch nur diese an seine Childprozesse (die DOS Box z.B.) ubergibt. Deshalb muss man den TC neu starten, damit er auch die neugesetzten Systemvariablen mitbekommt und sie auch weiter ubergeben kann.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
User avatar
klark
Member
Member
Posts: 189
Joined: 2003-02-07, 17:34 UTC
Location: Germany, Düsseldorf

Post by *klark »

Danke für die Antworten.

Ich hatte mir schon gedacht, dass es damit zusammenhängt, wunder mich aber trotzdem darüber, dass ein externes Programm wie z.B. die DOS-Box, dass ich eigentlich nur über einen Link aufrufe, auch ein Childprozess vom TC ist. Aber da fehlt mir vermutlich einfach ein wenig Hintergrundwissen über Programmieren im Allgemeinen und Windows im Speziellen :shock:

Viele Grüße,
Marc
#85370
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

@klark:
Warum setzst Du die Systemvariablen nicht direkt in der CMD-Instanz, z.b. mit setx?

Wenn Du XP hast, findest Du das in den Support Tools auf der XP CD in der Datei support.cab. Entweder alle Tools installieren oder setx extrahieren und in einen %path%-Pfad packen.

Dadurch ändert sich allerdings nichts daran, daß Du, um die Variablen nutzen zu können, Dich neu einloggen oder rebooten mußt.

Icfu
Last edited by icfu on 2005-06-28, 16:16 UTC, edited 1 time in total.
This account is for sale
User avatar
klark
Member
Member
Posts: 189
Joined: 2003-02-07, 17:34 UTC
Location: Germany, Düsseldorf

Post by *klark »

Hi icfu,
Warum setzst Du die Systemvariablen nicht direkt in der CMD-Instanz
Habe ich denn dann die Systemvariable nur in dieser CMD-Instanz, oder später (z.B. nach Schließen der Box) auch noch? Die Arbeit in der DOS-Box ist nämlich nur ein Teil der Arbeit.
Wenn Du XP hast
Wir arbeiten mir W2k. Gibt es die Tools auch für W2k bzw. kann ich die Tools (z.H. habe ich XP) unter W2k verwenden?

Viele Grüße,
Marc
#85370
User avatar
Sir_SiLvA
Power Member
Power Member
Posts: 3300
Joined: 2003-05-06, 11:46 UTC

Post by *Sir_SiLvA »

Google hilft:
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp

und sowie ich das verstehe (darum heißt das Tool ja auch SetX und nicht Set) bleibt die Var nach dem schließen der Dos-Box erhalten :)
Hoecker sie sind raus!
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Habe ich denn dann die Systemvariable nur in dieser CMD-Instanz, oder später (z.B. nach Schließen der Box) auch noch? Die Arbeit in der DOS-Box ist nämlich nur ein Teil der Arbeit.
setx setzt wie auch das Systemapplet die Variablen in der Registry, sie sind also dauerhaft. Wie oben gesagt, mußt Du daher eh neu einloggen oder rebooten, um sie überhaupt nutzen zu können. Oder irre ich da? Du schreibst oben " Diese setze ich in der bekannten Weise über die Systemeigenschaften.", aber Du schreibst nichts von Reboot, was mich wundert. Vielleicht erklärst Du das nochmal genauer, wo genau Du die Variablen änderst.
Wir arbeiten mir W2k. Gibt es die Tools auch für W2k bzw. kann ich die Tools (z.H. habe ich XP) unter W2k verwenden?
Das geht auch unter Windows 2000, kannst die Version von XP nehmen oder Du lädst es Dir hier runter:
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp

Icfu
This account is for sale
User avatar
klark
Member
Member
Posts: 189
Joined: 2003-02-07, 17:34 UTC
Location: Germany, Düsseldorf

Post by *klark »

Vielleicht erklärst Du das nochmal genauer, wo genau Du die Variablen änderst.
Habe jetzt hier zu Hause nur XP, deshalb bitte Nachsicht bei kleinen Abweichungen: z.B. Rechtsklick auf den Arbeitsplatz -> Eigenschaften (wahlweise Systemsteuerung -> System ) -> Umgebungsvariablen -> Systemvariablen -> Variable auswählen und -> Bearbeiten -> OK -> OK

Ich muss danach weder neu einloggen noch rebooten, um die geänderte Umgebungsvariable in einer unabhängig geöffneten DOS-Box benutzen zu können.

Eigentlich ist das auch alles kein Problem, denn schließlich kann ich in Zukunft in diesem Fall auch einfach die DOS-Box z.B. über "Ausführen -> Cmd" starten. Ich bin es aber nun mal gewohnt, alle häufig verwendeten Programme über den TC zu starten, und da ist mir das Verhalten nun mal aufgefallen...

Vielen Dank für Eure Hilfe,

Marc
#85370
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Hm, ich habe hier wohl ein Problem mit meinem Applikationsstarter TypeAndRun. Wenn ich den TC über diesen starte, werden geänderte Systemvariablen NICHT übernommen und damit habe ich bei Aufruf von CMD aus dem TC heraus auch keine Anzeige der geänderten Variablen.

Wenn ich den Start-Ausführen-Dialog nutze oder den TC über eine normale Windowsverknüopfung starte, sehe ich sie.

Das muß ich weiter untersuchen, bin im Moment etwas sehr verwirrt. :shock: ;)

Icfu
This account is for sale
Post Reply