Se eseguo un comando.
sudo some-command && some-other-command
Anche il secondo comando viene eseguito con sudo
previlege?
Se eseguo un comando.
sudo some-command && some-other-command
Anche il secondo comando viene eseguito con sudo
previlege?
TL; DR: NO
Il primo comando è
sudo some-command
Il secondo comando è
some-other-command
Il comando sudo
prende il seguente comando e lo esegue con privilegi elevati. Il &&
, tuttavia, non appartiene ad un comando ed è interpretato dalla shell, prima di eseguire il primo comando. Indica a bash di eseguire prima il primo comando e in caso di successo il secondo.
Quindi sudo
non sa di && some-other command
. Quando il processo elevato termina, bash prende il suo valore di ritorno, quindi esegue l'altro comando, che ancora non conosce il primo.
Questo può essere dimostrato facilmente:
$ sudo whoami && whoami
root
username
Per raggiungere ciò che desideri, puoi iniziare una bash elevata e lasciare che esegua entrambi i comandi:
$ sudo bash -c 'whoami && whoami'
root
root
Così ora, entrambi i comandi vengono eseguiti come root, poiché l'intero processo descritto sopra viene eseguito in un processo elevato, vale a dire la sessione bash iniziata con questo comando, che termina immediatamente dopo aver terminato. Tuttavia, entrambi whoami
s non si conoscono l'uno con l'altro.
Questo non è adatto a nessuno scopo ma per questa dimostrazione, il modo più semplice è semplicemente fare
sudo some-command && sudo some-other-command
No. Alcuni esempi che lo fanno sono:
sudo some-command && sudo some-other-command
sudo sh -c "some-command && some-other-command"
o se vuoi comandi di nidificazione puoi anche fare:
sudo bash <<"EOF"
some-command
some-other-command
sudo bash <<"EOF2"
some-command2
some-other-command2
EOF2
EOF
No, o devi scrivere sudo due volte, o fare qualcosa di simile
sudo bash -c 'foo && bar'
&&
significa che il comando (secondo) lato destro verrà eseguito solo se il comando lest lato (first) ha esito positivo, ad esempio il codice di uscita $?
è 0
.
I due comandi sono diversi tra loro e verranno eseguiti nei propri ambienti, quindi il secondo comando non verrà eseguito con sudo
privilegio.
Questo ti renderà chiaro:
$ sudo whoami && whoami
root
foobar
Sulla riga di comando, quando vedi
$ command one && command two
l'intento tipico è di eseguire il comando che segue il & amp; & amp; solo se il primo comando ha successo.
assolutamente no, questo è proprio come scrivere due comandi consecutivi, questo & amp; non dà alcun privilegio aggiunto a un comando. È solo un separatore .
Per dimostrare che facciamo un esempio.
touch fileA fileB
Ho creato due file fileA e fileB. Ora eseguirò il comando
sudo chown test:test fileA && chown test:test fileB
Sto cambiando utente e proprietario del gruppo di questi file per il test del nome utente e del gruppo. Ora il primo comando dovrebbe essere eseguito mentre per quanto riguarda l'altro?
L'output è:
chown: changing ownership of 'fileB': Operation not permitted
Quindi il comando non è stato eseguito poiché ha bisogno di sudo
e sebbene possiamo concludere che & amp; & amp; non è una sostituzione del secondo sudo
NO, e la seguente era una volta molto comunemente macro.
sudo reboot && exit
Quasi tutti avrebbero dovuto farlo almeno una volta em>
sudo apt-get update && sudo apt-get upgrade
Quindi è una grande domanda per intervistare "topolino".
È così facile testare che la domanda potrebbe essere sospettata per un esercizio di riempimento statistico.