DISPLAY-Varible durch Script verändern + setzen [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

DISPLAY-Varible durch Script verändern + setzen [gelöst]

Beitrag von Duff » 31.08.2006 09:18:33

Hallo,

ich finde den Fehler nicht wirklich. Ich möchte mit einem einfachen Script die DISPLAY-Variable selber eingeben und somit verändern können. Doch leider funktioniert das nicht so, wie es gerne hätte. Wenn ich das Script ausführe und mir die DISPLAY-Variable durch das Script anzeigen lasse, funktioniert alles. Sobald ich aber ein echo $DISPLAY in der Shell absetze, bekomme ich eine andere Variable.

Das kleine, kurze und einfach Script:

Code: Alles auswählen

#!/bin/ksh
#set -x
echo "IP-Adresse fuer die Display-Variable eingeben: "
read _EINGABE

export DISPLAY="${_EINGABE}:0.0"
echo $DISPLAY
Die Ausgabe:

Code: Alles auswählen

IP-Adresse fuer die Display-Variable eingeben:
192.168.1.12
192.168.1.12:0.0
Und ein echo $DISPLAY auf der Shell:

Code: Alles auswählen

localhost:21.0
Zuletzt geändert von Duff am 13.09.2006 14:57:04, insgesamt 1-mal geändert.
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.08.2006 10:15:06

Dein Problem ist, dass du innerhalb deines Skripts in einer Subshell arbeitest. Wenn du dort die DISPLAY-Variable aenderst, gilt die Aenderung nur in deinem Skript. Wenn dieses beendet wird, dann ist die Aenderung auch wieder weg.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 31.08.2006 10:18:13

Ja danke für die Antwort.

Aber wie mache ich es denn, dass die Umgebungsvariable global gesetzt wird?
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.08.2006 10:46:17

Global setzt du sowas z.B. ueber die /etc/environment. Wobei ich nicht weiss, ob das in dem Fall Sinn macht.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 31.08.2006 10:58:50

Ich denke, dass ich die Variablen auch über meine .profile setzen kann.

Nur möchte ich die DISPLAY-Variable erst später setzen und ich muss die IP-Adresse eingeben, da ich nicht genau weiß, welche ich eintragen muss (ist nicht immer die selbe).

Gibt es denn da keine Möglichkeit?
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.08.2006 11:11:40

Hm, was genau willst du denn machen? Gehst du von nem anderen Rechner aus per SSH auf deinen Linux-Rechner und willst dann die X-Ausgaben von diesem auf deinen Rechner umleiten?
SSH setzt die DISPLAY-Variable naemlich automatisch, wenn du X-Forwarding aktiviert hast.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 31.08.2006 12:25:57

Nee, ich möchte über cygwin auf den linux rechner. Ich muss aber noch (da ich nicht direkt auf den linux-rechner kann, sondern noch ein anderer rechner dazwischen ist) jedes mal die DISPLAY-Variable afu dem "mittleren" Rechner setzen, damit auch zum richtigen Rechner das DISPLAY weitergeleitet wird.

Hoffe dass meine Erklärung halbwegs plausibel ist?
Oh, yeah!

Benutzeravatar
esteel
Beiträge: 242
Registriert: 23.07.2002 11:06:25
Kontaktdaten:

Beitrag von esteel » 31.08.2006 12:33:45

Bash kann eine Datei 'sourcen' indem du . file eingibst, damit wird erzwungen daß die aktuelle Shell die Datei einliest und keine Subshell aufruft. Vielleicht kann ksh das auch.. mit der kenn ich mich nur nicht aus :)

Sowas ähnliches mache ich in meiner .bashrc für keychain:

Code: Alles auswählen

keychain --ignore-missing --quiet identity
. "${HOME}/.keychain/`uname -n`-sh"
Die zweite Zeile setzt dabei Variablen für ssh und den ssh-agent.
i support free software: http://www.fsfe.org/en/fellows/esteel
a great free and opensource FPS game: http://nexuiz.com

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 13.09.2006 14:56:43

Jo danke für die Antwort. Das ganze scheint zu funktionieren.

Wenn ich folgendes, einfaches Script mit einem . <scriptname> ausführe, wird die DISPLAY-Variable endlich gesetzt.

Code: Alles auswählen

#!/bin/ksh
#set -x
echo "IP-Adresse fuer die Display-Variable eingeben: "
read _EINGABE

export DISPLAY="${_EINGABE}:0.0"
Oh, yeah!

Antworten