[linux-l] Umgebungsvariable mit . im Namen
Volker Grabsch
vog at notjusthosting.com
Mo Aug 13 13:04:11 CEST 2007
On Mon, Aug 13, 2007 at 12:25:35PM +0200, Rocco Melzian wrote:
> > steffen at link:~> env ABLE.PREFDIR=/tmp bash
> > steffen at link:~> env|grep ABLE
> > ABLE.PREFDIR=/tmp
>
> me at dirac:~/> env ABLE.PREFDIR=/tmp bash
> bash: module: command not found
Sieht so aus, als wäre "env" bei dir ein Alias auf irgendwas.
Mit meiner Bash zu Hause klappt's jedenfalls.
> Mit sh funktioniert es dann ...
"sh" ist meistens eh nur dir Bash in einem Kompatibilitätsmodus. ;-)
> me at dirac:~/> env ABLE.PREFDIR=/tmp sh
> sh-2.05b$ env | grep ABL
> ABLE.PREFDIR=/tmp
Das Environment ist korrekt gesetzt. Mehr kannst du nicht verlangen.
> ... fast ...
>
> sh-2.05b$ echo $ABLE.PREFDIR
> .PREFDIR
Dieser Befehl ist äquivalent zu:
echo ${ABLE}.PREFDIR
Das heißt, die Shell sucht nach einer Variablen "$ABLE". Diese gibt's
nicht, also bleibt nur noch ".PREFDIR" übrig. Kein Fehler, alls richtig!
> > steffen at link:~> env ABLE.PREFDIR=/tmp ./komischeSoftware
Das sollte eigentlich funktionieren!
Es sei denn, "komischeSoftware" ist ein Shellscript. Wenn in diesem
Shellscript tatsächlich sowas wie "$ABLE.PREFDIR" drinsteht, dann
hast du aber eh keine Chance. Dann ist das Shellscript schlicht und
ergreifend falsch. (siehe oben)
Falls es aber kein Shellscript ist: Könnte es sein, dass es die
Umgebungs- variable "able.prefdir" statt "ABLE.PREFDIR" abfragt?
Es scheint ja offenbar nur unter Windows getestet worden zu sein,
und da sind Umgebungsvariablen case-insensitive.
> Habe jetzt gesehen, dass man den Pfad auch per Option übergeben kann:
>
> me at dirac:~/>java -Dable.prefdir=/tmp -jar myProg.jar
>
> So funktioniert es jetzt zuverlässig. Wieso nur vergibt jemand so
> "ungewöhnliche" Umgebungsvariablennamen, machen nur Ärger ...
Windows-Programmierer, die nicht nicht auf Portabilität achten.
Java-Programme sind schließlich schon per Definition portabel ...
Hab vor ein paar Wochen eine PHP-Applikation mit dem selben Denkfehler
gesehen: Überall tauchen absolute Pfade (D:\...) und hardgecodete URLs
auf. Läuft ja in einem Windows-2000 in einem Vmware. Vmware ist ja
portabel, und sein lokales Netzwerk kann man ja jederzeit auf die
vorgegebenen IPs umstellen ...
Kann man nichts machen. *sigh*
Gruß,
Volker
--
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR
Mehr Informationen über die Mailingliste linux-l