"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
 
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
 

Neue Beiträge

Zurück