Unterschied zwischen su und su -c (Umgebungsvariablen?) Beim Ausführen von db2?

3073
ArtOfWarfare

Wenn ich das tippe:

su <user> -c "/home/<user>/sqllib/bin/db2 catalog tcpip node <dbName> remote <ip> server <port>" 

Ich bekomme diese Fehlermeldung:

SQL10007N Message "-1390" could not be retrieved. Reason code: "3". 

Aber wenn ich das mache:

su <user> /home/<user>/sqllib/bin/db2 catalog tcpip node <dbName> remote <ip> server <port> 

Es funktioniert gut.

Das Problem ist, ich kann "su" nicht ohne -c verwenden, da ich dies in ein Python-Skript einsetze und Python die Eingabeaufforderung an Bash verliert, wenn "su" ausgeführt wird.

Ich denke, mein Problem liegt irgendwie bei meinen Umgebungsvariablen - wie würde ich feststellen, was der Unterschied zwischen den jeweiligen Umgebungsvariablen ist, und was noch wichtiger ist, wie kann ich sie im su-c-Fall beheben?

0

1 Antwort auf die Frage

1
ArtOfWarfare

Sie können den Unterschied zwischen den Umgebungen wie folgt feststellen:

su <user> printenv  su <user> -c "printenv" 

Sie können die Umgebung im zweiten Fall folgendermaßen ändern:

su <user> -c "export <varname>=<varvalue>; <more commands...>" 

Für das spezifische Problem, das ich hatte, stellte ich fest, dass ich den Variablensatz brauchte DB2INSTANCE. Das hat also für mich funktioniert:

su <user> -c "export DB2INSTANCE=<user>; /home/<user>/sqllib/bin/db2 catalog tcpip node <dbName> remote <ip> server <port>"