db2를 실행할 때 su와 su -c (환경 변수?)의 차이점은 무엇입니까?


1

내가 이것을 입력하면 :

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"를 사용할 수없고 파이썬이 "su"를 실행할 때 Bash에 대한 프롬프트를 잃는다는 것입니다.

내 문제는 어떻게 든 환경 변수에 있다고 생각합니다. 각 경우마다 환경 변수의 차이점을 어떻게 결정하고 더 중요하게는 su -c 경우 어떻게 해결할 수 있습니까?

답변:


2

다음과 같은 환경의 차이점을 찾을 수 있습니다.

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>"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.