Когда я набираю это:

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

Я получаю это сообщение об ошибке:

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

Но когда я делаю это:

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

Работает нормально.

Проблема в том, что я не могу использовать "su" без -c, потому что я помещаю это в скрипт Python, и Python теряет приглашение Bash, когда запускается "su".

Я думаю, что моя проблема как-то связана с моими переменными среды - как бы я определил разницу между переменными среды в каждом случае и, что более важно, как я могу исправить их в случае su -c?

1 ответ1

1

Вы можете найти разницу между средами, подобными этой:

su <user>
printenv

su <user> -c "printenv"

Вы можете изменить среду во втором случае следующим образом:

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

Теперь для конкретной проблемы, с которой я столкнулся, я обнаружил, что мне нужен набор переменных DB2INSTANCE . Так что это сработало для меня:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .