답변:
TL; DR : 아니요
첫 번째 명령은
sudo some-command
두 번째 명령은
some-other-command
이 명령 sudo
은 다음 명령을 사용하여 상승 된 권한으로 실행합니다. 은 &&
, 그러나, 명령에 속하지 않는 첫 번째 명령을 실행하기 전에, 쉘에 의해 해석된다. bash에게 먼저 첫 번째 명령을 실행하고 성공하면 두 번째 명령을 실행하도록 지시합니다.
따라서에 sudo
대해 알지 못합니다 && some-other command
. 높은 프로세스가 종료되면 bash는 반환 값을 가져 와서 다른 명령을 실행합니다.이 명령은 다시 첫 번째 명령을 알지 못합니다.
이것은 쉽게 설명 될 수 있습니다 :
$ sudo whoami && whoami
root
username
원하는 것에 도달하기 위해 높은 bash를 시작하고 두 명령을 모두 실행할 수 있습니다.
$ sudo bash -c 'whoami && whoami'
root
root
이제 위에서 설명한 전체 프로세스가 상승 된 프로세스, 즉이 명령으로 시작된 bash 세션이 완료된 후 두 명령이 모두 루트로 실행됩니다. 그래도 두 whoami
사람은 서로의 존재를 모릅니다.
이것은 어떤 목적에도 적합하지 않지만이 데모에서는 더 쉬운 방법은 간단하게 수행하는 것입니다
sudo some-command && sudo some-other-command
아니요.이를 수행하는 몇 가지 예는 다음과 같습니다.
sudo some-command && sudo some-other-command
sudo sh -c "some-command && some-other-command"
또는 중첩 명령을 원할 경우 다음을 수행 할 수도 있습니다.
sudo bash <<"EOF"
some-command
some-other-command
sudo bash <<"EOF2"
some-command2
some-other-command2
EOF2
EOF
$ sudo -s -- whoami && whoami
제공root
username
sudo -s -- "whoami && whoami"
command와 같은 명령을 찾을 수없는 것으로 보입니다 "whoami && whoami"
. 이 구성을 &&와 함께 사용하는 방법? 나는 sudo -s cd ..
반대로 오류가 없다는 것을 알았 습니다 sudo cd ..
.
sudo bash <<"EOF"
! 감사! :-)
명령 행에서
$ command one && command two
일반적인 의도는 첫 번째 명령이 성공한 경우에만 && 뒤에 나오는 명령을 실행하는 것입니다.
절대적으로 아니오, 이것은 두 개의 연속 명령을 작성하는 것과 같으며, &&는 명령에 추가 권한을 부여하지 않습니다. 그것은 단지 seperator 입니다.
그것을 증명하기 위해 우리는 예를 들어 보자.
touch fileA fileB
fileA와 fileB라는 두 파일을 만들었습니다. 이제 명령을 실행하겠습니다
sudo chown test:test fileA && chown test:test fileB
이 파일의 사용자 및 그룹 소유자를 사용자 및 그룹 이름 테스트로 변경하고 있습니다. 이제 첫 번째 명령은 다른 명령은 어떻습니까?
출력은 다음과 같습니다.
chown: changing ownership of `fileB': Operation not permitted
따라서 명령이 필요하기 때문에 실행되지 않았으며 sudo
&&는 두 번째를 대체하지 않는다는 결론을 내릴 수 있습니다.sudo
whoami
예를 들어 +1입니다 .