Hallo,
ich möchte in meinem Python-Skript den Inhalt der Bash-Variable "$HOSTNAME" bekommen. Ich kann natürlich den Hostnamen auch mithilfe von socket.gethostname() ermitteln, aber ich würde gerne wissen, wie es mittels der Bashvariable funktioniert. Da ich kein bash kann, weiß ich nicht, wie man an den Inhalt einer Bash-Variable kommt, ohne sie auszugeben (und ohne das Pythonskript mittels bash-Skripten zu starten).
Kann mir jemand helfen?
Inhalt einer Bash-Variable mittels Python ermitteln
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Bei Shellvariablen redet man im allgemeinen von Umgebungsvariablen, damit wird man dann im os Modul fuendig: http://docs.python.org/library/os.html#os.getenv
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Ich kriege jedoch immer None zurück. Habe alle möglichen Varianten ausprobiert:
Mache ich etwas falsch?
Code: Alles auswählen
>>> import os
>>> ret = os.getenv("HOSTNAME")
>>> ret
>>> print ret
None
>>> ret = os.getenv("hostname")
>>> ret
>>> ret = os.getenv("$HOSTNAME")
>>> ret
>>>
@snakemake: 'HOSTNAME' wäre richtig. Wenn Du da `None` zurück bekommst, dann ist die Variable halt nicht gesetzt. Wenn sie in der Shell vorhanden ist, von der aus Du Python gestartet hast, dann wurde sie nicht exportiert und ist nur lokal in der Shell definiert.
Ok. Mithilfe von export HOSTNAME könnte ich sie exportieren. Nun kommt aber ein neues Problem: Ich müsste, bevor ich mein Pythonskript starte, die Variable exportieren, damit ich dann im Python-Skript die Variable mit getenv aufrufen kann. Rufe ich export HOSTNAME im Pythonskript auf und nicht vor dem Start des Skripts, macht es natürlich keinen Sinn, da die bash den Python-Interpreter bereits als Kind ohne exportierten Variablen aufgerufen hat.
Wie kriege ich es hin, ohne vorher vor dem Skriptstart exp... aufrufen zu müssen?
Wie kriege ich es hin, ohne vorher vor dem Skriptstart exp... aufrufen zu müssen?