나는 PHP에서 실행하는 다음 줄을 가지고 있습니다
sudo -u db2inst1 -s -- "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
Sudo 버전에서는 잘 작동합니다1.7.2.
이제 SUSE Linux Enterprise Server 11 (x86_64)
. sudo가 없어서 저장소(Sudo 버전)에서 설치했습니다.1.6.9p17) 그러나 위의 구문은 작동하지 않습니다. 그것은 던진다bin/bash: /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'": No such file or directory
이 작업을 어떻게 수행할 수 있는지 아시나요?
db2inst1 계정으로 실행하면 /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"
모든 것이 잘 작동합니다.
답변1
왜 이 오류가 발생하는지 잘 모르겠습니다. 나는 sudo 1.8.3이 설치된 시스템을 가지고 있으며 문서에는 다음과 같은 것이 sudo -s "echo hi"
작동해야 한다고 명확하게 나와 있지만 작동하지 않습니다.
제가 항상 해왔던 방식은 동일한 작업을 -s [command]
수동으로 수행하는 것입니다.
sudo sh -c 'echo hi'
아니면 당신의 경우
sudo -u db2inst1 sh -c "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
논쟁이 항상 있었던 것은 아니기 때문에 호환성이 더 좋습니다 -s
(불행히도 직장에는 정말 오래된 기계가 있습니다).
편집:
발생한 오류는 문자 그대로 이름이 지정된 실행 파일을 db2 "update EDU.contact set MOBILE_PHONE = '123'"
디렉터리 (예, 디렉터리로 /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin
찾습니다 )에서 찾고 있다는 것입니다. db2 connect to PLC;
이것은 분명히 존재하지 않습니다.