¿Diferencia entre su y su -c (variables de entorno?) Cuando se ejecuta db2?

1

Cuando escribo esto:

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

Me sale este mensaje de error:

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

Pero cuando hago esto:

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

Funciona bien.

El problema es que no puedo usar "su" sin -c porque estoy colocando esto en un script de Python, y Python pierde el mensaje de Bash cuando ejecuta "su".

Creo que mi problema radica de alguna manera en mis variables de entorno: ¿cómo determinaría cuál es la diferencia entre mis variables de entorno en cada caso y, lo que es más importante, cómo puedo solucionarlas en el caso su -c?

ArtOfWarfare
fuente

Respuestas:

2

Puede encontrar la diferencia entre los entornos como este:

su <user>
printenv

su <user> -c "printenv"

Puede modificar el entorno en el segundo caso así:

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

Ahora, para el problema específico que estaba teniendo, descubrí que necesitaba el DB2INSTANCEconjunto de variables . Entonces esto funcionó para mí:

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