Diferença entre su e su -c (variáveis de ambiente?) ao executar o db2?

0

Quando digito isso:

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

Eu recebo esta mensagem de erro:

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

Mas quando faço isso:

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

Funciona bem.

O problema é que não posso usar "su" sem -c porque estou colocando isso em um script Python, e o Python perde o prompt para Bash quando ele executa "su".

Eu acho que meu problema está nas minhas variáveis de ambiente de alguma forma - como eu determinaria qual é a diferença entre minhas variáveis de ambiente em cada caso e, mais importante, como posso corrigi-las no caso su -c?

    
por ArtOfWarfare 14.11.2014 / 18:11

1 resposta

1

Você pode encontrar a diferença entre os ambientes assim:

su <user>
printenv

su <user> -c "printenv"

Você pode modificar o ambiente no segundo caso assim:

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

Agora, para o problema específico que estava tendo, descobri que precisava da variável DB2INSTANCE set. Então isso funcionou para mim:

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