Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
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:
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.
-
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.
-
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.
-
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!
-
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.
-
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!