"su - ora<sid> -c <befehl>" auf Unix in Perl klappt nicht


Sylan

Mitglied
Hallo!

Mein Problemkind ist eine kleine Zeile Code, welche einwandfrei auf Consolenebene funktioniert, nicht aber wenn sie in einem Perl Skript steht:

Code:
su - ora<sid> -c echo \$ORACLE_HOME | tail -n 1
Ich habe Perl mitgeteilt, dass ORACLE_HOME eine ENV Variable ist. Sollte also niht das Problem sein. Ich habe diese Zeile schon mit ` ` ausgefuehrt und mit system();
Jedes mal wird zwar der Benutzer gewechselt, aber das echo $ORACLE_HOME nicht ausgefuehrt.
Woran kann das liegen? Meine Vermutung ist, dass folgende Zeile
Code:
my $ORACLE_HOME=$ENV{"ORACLE_HOME"};
nicht fuer su - ora<sid> gilt, kann das sein? Denn als ich die gleichen Zeilen mit $HOME ausprobiert habe, hat er jedenmal das /root home Verzeichnis ausgegeben. Andere Kommandos klappen naemlich einwandfrei als ora<sid>.

Kann wer helfen:

Danke und Gruss,
Sylan
 

Sylan

Mitglied
Loesung! Oder doch nicht?

So, ich habe das nun per Umweg herausgefunden, was die ORACLE_HOME Variable ist:

Code:
my $getorahome = `su - ora$sid -c env | grep ORACLE_HOME*`;
        my @orahome = split (/=/, $getorahome);
Aber kann das die Loesung sein? Ich bekomme genau das, was ich haben will, aber etwas umstaendlich finde ich. Das muss doch noch irgendwie anders gehen...

Gruss,
Sylan