При использовании & amp; & amp; и sudo по первой команде, вторая команда запускается как sudo тоже?

Если я запустил команду.

sudo some-command && some-other-command

Является ли вторая команда также запущена с sudo?

1
задан 10 June 2015 в 14:44

5 ответов

Нет. Вот некоторые примеры, которые делают это:

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
Второй использует другую оболочку. Имейте в виду, что, когда вы используете «или» во второй версии, вам нужно избегать тех, которые находятся в командах или параметрах этой команды (то есть. \ 'Или \ "), так что они могут быть сложными очень быстро.
18
ответ дан 23 May 2018 в 19:58
  • 1
    Третий метод не работает: $ sudo -s -- whoami && whoami дает root username – BartekChom 10 June 2015 в 18:26
  • 2
    @BartekChom жаль, что я пропустил котировки на этом – Rinzwind 10 June 2015 в 20:22
  • 3
    sudo -s -- "whoami && whoami" кажется, что команда не найдена, более или менее такая же, как команда "whoami && whoami". Как использовать эту конструкцию с & amp; & amp ;? Я вижу, что sudo -s cd .. не дает ошибок, а не sudo cd ... – BartekChom 10 June 2015 в 23:31
  • 4
    Сегодня я узнал что-то новое: sudo bash <<"EOF"! Благодаря! :-) – Fabby 12 June 2015 в 12:50

Нет, либо вы должны написать sudo дважды, либо сделать что-то вроде

sudo bash -c 'foo && bar'
4
ответ дан 23 May 2018 в 19:58

&& означает, что правая односторонняя (вторая) команда будет выполняться только в том случае, если успешно выполнена первая (первая) команда, то есть код выхода $? равен 0.

Две команды отличаются друг от друга и будут работать в их собственных средах, поэтому вторая команда не будет работать с привилегией sudo.

Это позволит вам очистить:

$ sudo whoami && whoami 
root
foobar
2
ответ дан 23 May 2018 в 19:58

В командной строке, когда вы видите

$ command one && command two

, типичным намерением является выполнение команды, следующей за & amp; & amp; только если первая команда выполнена успешно.

Является ли другая команда запущена как sudo также?

абсолютно нет, это так же, как запись двух последовательных команд, это & ​​amp; & amp; не дает никаких дополнительных привилегий команде.

Чтобы доказать это, возьмем пример.

touch fileA fileB 

Я создал два файла fileA и fileB. Теперь я запустил команду

sudo chown test:test fileA && chown test:test fileB

Я меняю владельца и группу этих файлов на проверку имени пользователя и группы. Теперь первая команда должна запускаться, а другая -

Выход:

chown: changing ownership of `fileB': Operation not permitted

Таким образом, команда не запускалась, так как она нужна sudo, и хотя мы можем заключаем, что & amp; & amp; не является заменой второго sudo

0
ответ дан 23 May 2018 в 19:58

НЕТ, а следующее было обычно очень широко.

sudo reboot && exit

Как раз все должны были сделать это хотя бы один раз

sudo apt-get update && sudo apt-get upgrade

Таким образом, это отличный вопрос «mickey mouse».

Это настолько легко проверено, что вопрос может быть заподозрен в упражнении для заполнения статистики.

0
ответ дан 23 May 2018 в 19:58

Другие вопросы по тегам:

Похожие вопросы: