[Linux] Umgebungsvariablen einer Shell auslesen



  • Hallo.
    Ich würde gerne aus meinem Terminal aterm heraus Umgebungsvariablen der in dem Terminal laufenden Shell auswerten.
    Zuerst habe ich versucht, diese im aterm per getenv auszulesen, was mir aber nur veraltete Werte liefert. Meine nächste Idee war, über das /proc-FS zu gehen, was jedoch auch nur veraltete Werte liefert :-/, wie diese beiden Shell-Aufrufe zeigen:

    [b]$ echo $FOCUS[/b]
    david@acer /home/david
    [b]$ cat /proc/$$/environ | tr '\00' '\n'  | grep FOCUS[/b]
    FOCUS=chmod 600 /home/david/.xsession-errors
    

    Die Umgebungsvariablen setze ich direkt im Quelltext der bash per setenv.
    Irgendwelche Ideen, wie ich an die Umgebungsvariablen herankomme?
    Danke im Voraus.
    David



  • Ich verstehe das Problem irgendwie nicht.

    Warum machst Du es denn nicht mit:

    echo $FOCUS 😕



  • Ich glaube, ich habe mich etwas undeutlich ausgedrückt:
    Es geht darum, Umgebungsvariablen programmiertechnisch zu ermitteln. Ein einfaches Beispiel wäre ein Programm, dass den Wert einer Shell Variable $FOO aus einer fremden bash ausliest.
    Es ist also kein direkter Zugriff und damit auch kein $ echo $FOO möglich, sondern es geht darum, aus einem fremden Programm heraus den Wert von $FOO == `echo $FOO` zu ermitteln.



  • Hallo,

    meinst du sowas hier:

    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    
    int main()
    {
            printf("%s\n", getenv("SHELL"));
            return 0;
    }
    


  • Jain.
    Ich werde mal etwas weiter ausholen:
    Es geht darum, dass ich als Titel meines aterms gerne das gerade ausgeführte Programm anzeigen würde. Dafür habe ich schon in dem Quelltext der bash etwas Code eingebaut, der das gerade ausgeführte Programm in der Variable FOCUSspeichert,dieichauchinderbashschonproblemlosausgebenkann(FOCUS speichert, die ich auch in der bash schon problemlos ausgeben kann ( echo $FOCUS).
    Soweit so gut.. Jetzt geht es aber darum, dass ich irgendwie aus dem aterm die Variable $FOCUS auslesen muss, um sie als Titel setzen zu können. Per getenv komme ich nur an die Umgebungsvariablen von aterm, über /proc nur an veraltete Variablen :(.



  • Das Auslesen von Umgebungsvariablen eines fremden Programmes sollte verboten sein. Dein aterm sollte mit irgendeiner Art von Interprozess Kommunikation mit der bash den Namen austauschen.



  • Im IRC habe ich von denis erfahren, dass man den Titel per Escape-Zeichen setzen kann:
    $ echo -e "\033]0;test\007"
    Das wars 🙂
    Danke an euch
    David


Anmelden zum Antworten