staging.inyokaproject.org

[Desktop file] Exec .sh ignoriert Umgebungsvariablen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

En_Passant

Anmeldungsdatum:
24. Juni 2011

Beiträge: Zähle...

Ich grüße euch.

Ich setze (export) in einem Shell-Skript zwei Umgebungsvariablen und starte danach meine Anwendung, welche diese nutzt. Wenn ich mein Skript über ein Terminal ausführe, startet die Anwendung und beiden Umgebungsvariablen wurden korrekt gesetzt. Wenn ich das Skript jedoch in meine .dektop Datei hinter exec setze, werden die Umgebungsvariablen eben nicht gesetzt.

Wie kann ich es möglich machen, dass auch beim Ausführen des Skripts über eine .desktop Datei die Umgebungsvariablen korrekt gesetzt werden?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

En_Passant schrieb:

Ich grüße euch.

Salve! Und herzlich willkommen hier im Forum!

Ich setze (export) in einem Shell-Skript zwei Umgebungsvariablen und starte danach meine Anwendung, welche diese nutzt. Wenn ich mein Skript über ein Terminal ausführe, startet die Anwendung und beiden Umgebungsvariablen wurden korrekt gesetzt. Wenn ich das Skript jedoch in meine .dektop Datei hinter exec setze, werden die Umgebungsvariablen eben nicht gesetzt.

Das kann praktisch nicht sein. Wenn es einen Grund für Fehlverhalten gibt, dann ist es etwas anderes.

Wie kann ich es möglich machen, dass auch beim Ausführen des Skripts über eine .desktop Datei die Umgebungsvariablen korrekt gesetzt werden?

Du solltest erst mal Dein Skript sowie die .desktop-Datei zeigen, damit man überhaupt eine Chance hat, nachzuvollziehen, was da passiert - oder nicht passiert.

En_Passant

(Themenstarter)

Anmeldungsdatum:
24. Juni 2011

Beiträge: Zähle...

Hier die Dateien:

/usr/lib/firefox/firefox_tweak.sh

1
2
3
4
5
#!/bin/sh

export GDK_SCALE=2.0
export MOZ_USE_XINPUT2=1
/bin/firefox

/usr/share/applications/firefox.desktop

1
2
...
Exec=/usr/bin/sh /usr/lib/firefox/firefox_tweak.sh

Wenn ich nun die firefox.desktop über das gnome menu starte, wirken die Umgebungsvariablen nicht und der Firefox startet klein und lässt sich nicht per touch scrollen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

Im Terminal arbeitest Du aber mit der Bash /bin/bash, nicht mit /bin/sh.

1
2
3
4
5
export GDK_SCALI=2.0
export MOTZ_USE_XINPUT2=1
echo $GDK_SCALI $MOTZ_USE_XINPUT2
2.0 1
cat umgvar.sh 
1
2
3
4
5
6
#!/bin/sh

export GDK_SCALI=2.2
export MOTZ_USE_XINPUT2=2

echo $GDK_SCALI $MOTZ_USE_XINPUT2
1
2
./umgvar.sh 
2.2 2
1
2
echo $GDK_SCALI $MOTZ_USE_XINPUT2
2.0 1

Ich finde das Gebimsel mit Umgebungsvariablen, export, environment u.dgl. auch verwirrend, daher bitte ich meinen Erklärungen mit Skepsis zu begegnen:

Wenn ich ./umgvar.sh aufrufe, oder bash ./umgvar.sh oder sh ./umgvar.sh, dann wird eine Subshell gestartet und deren Umgebungsvariablen gesetzt, die aber nicht in den Elternprozess zurückstrahlen.

Wenn ich das explizit will muss ich das Script sourcen (vor dem Sourcen sicherstellen, dass das Skript nicht mit einem Exitaufruf endet, sonst wird die Elternshell geschlossen):

1
. ./umgvar.sh 

Man beachte den kl. Punkt vorne.

Dann sind die Variablen auch im Elternscript entsprechend gesetzt.

Für den Desktop dürfte das noch ein zu geringer Erkenntnisgewinn sein. Was die Parameter für den Firefox bedeuten weiß ich nicht - man firefox listet sie nicht auf.

Vielleicht musst Du explizit eine Datei in /etc ändern, oder in ~/.config, in der MOZ_USE und SCALE definiert sind.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

Mir fällt noch auf, dass der Shebang sagt /bin/sh, aber die desktop-Datei sagt: Exec=/usr/bin/sh .

Die Desktopdatei sollte ohne expliziten Shellaufruf auskommen, nur mit

1
Exec=/usr/lib/firefox/firefox_tweak.sh

En_Passant

(Themenstarter)

Anmeldungsdatum:
24. Juni 2011

Beiträge: 178

user_unknown schrieb:

Die Desktopdatei sollte ohne expliziten Shellaufruf auskommen, nur mit

1
Exec=/usr/lib/firefox/firefox_tweak.sh

So hatte ich es ursprünglich auch aber der gestartete Firefox "ignoriert" auch da die Umgebungsvariablen, bzw. wurden sie nicht gesetzt.

1
2
export GDK_SCALE=2.0 # Anwendungen werden aufs doppelte skaliert
export MOZ_USE_XINPUT2=1 # Firefox lässt sich per touchscreen scrollen

Noch mal: Wenn ich mein Skript aus einem Terminal starte, ist alles korrekt. Nur wenn ich es per Desktop-File starte, ist der Firefox klein und lässt sich nicht per touchscreen scrollen.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Auf welche Shell zeigt denn sh? Ist das die bash, dash oder eine andere Shell?

Ansonsten könntest du es mal mit env probieren, also z.B.:

1
Exec=env GDK_SCALE=2.0 MOZ_USE_XINPUT2=1 firefox

En_Passant

(Themenstarter)

Anmeldungsdatum:
24. Juni 2011

Beiträge: 178

sh zeigt auf eine bash, aber das liegt nicht das Problem.

Ich habe gerade festgestellt, dass meine firefox.desktop immer den Firefox startet und Exec ignoriert. Während Name den Namen ändert, tut Exec anscheinend nichts.

En_Passant

(Themenstarter)

Anmeldungsdatum:
24. Juni 2011

Beiträge: 178

Bitte entschuldigt, dass ich eure Zeit verschwendet habe. Ich bin ein Idiot. 😬

Ohne mir die firefox.desktop mal vollständig anzuschauen, bin ich mit dem vim einfach ans Dateiende gesprungen und habe die dortige Exec manipuliert. Dass ich mich da aber im Abschnitt [Desktop Action new-private-window] befinde, war mir nicht klar! 🙄

Antworten |