当我输入以下内容时:
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>
它工作正常。
问题是,我不能使用没有 -c 的“su”,因为我将它放入 Python 脚本中,而 Python 在运行“su”时会丢失对 Bash 的提示。
我认为我的问题在某种程度上在于我的环境变量——我如何确定每种情况下我的环境变量之间的差异,更重要的是,如何在 su -c 情况下修复它们?
答案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>"