Для установки из ppa вы должны использовать следующие 3 команды:
sudo add-apt-repository example/program
sudo apt-get update
sudo apt-get install example-program
Есть ли причина этого не делать:
sudo add-apt-repository example/program
sudo apt-get update && sudo apt-get install example-program
или это:
sudo add-apt-repository example/program && sudo apt-get update
sudo apt-get install example-program
или даже так:
sudo add-apt-repository example/program && sudo apt-get update && sudo apt-get install example-program
Есть ли техническая разница между ними?
&&
оператор выполняет следующую команду только на успех предыдущей команды / цепочка команд.
Таким образом, последствия для тех случаев:
Сценарий выполняет каждую команду независимо
Сценарии выполняются sudo add-apt-repository example/program
и sudo apt-get update
независимо и sudo apt-get install example-program
только на успех sudo apt-get update
Сценарии выполняются sudo add-apt-repository example/program
независимо, sudo apt-get update
только на успех sudo add-apt-repository example/program
и sudo apt-get install example-program
независимо
Сценарии выполняются sudo add-apt-repository example/program
независимо, sudo apt-get update
только на успех sudo add-apt-repository example/program
и sudo apt-get install example-program
только на успех sudo add-apt-repository example/program
Так, для ответа на вопрос в этом случае просто объедините всех их в цепочку, так как Вам нужно все для следования:
sudo add-apt-repository example/program && sudo apt-get update && sudo apt-get install example-program
Кроме того, add-apt-repository
и apt-get
может быть установлен автоматически ответить на да на все запросы с помощью -y
аргумент, так чтобы полностью автоматизировать все:
sudo add-apt-repository -y example/program && sudo apt-get update && sudo apt-get install -y example-program
Все там - то же самое. Я думаю причина, она обычно перечисляла способ, которым это, то, потому что это выглядит лучше и легче помнить, так как команды разделены.
Если бы ;
использовался, то они были бы тем же, но &&
продолжается, только если команда до него отправляет код выхода, говоря, что оно вышло успешно. Это автоматически продолжится, если все будет подходить и только остановится, чтобы предложить пользователю спрашивать, хотят ли они добавить PPA и хотят ли они установить пакет. Это может также работать лучше, чем с тремя лайнерами, если все коды выхода, произведенные программами, точны, в то время как пользователь может продолжить вводить команды и не заметил первое или отказавшее второе.
, Если Вы хотите пойти полностью автоматического продолжения:
sudo add-apt-repository -y example/ppa && sudo apt-get update && sudo apt-get install -y example-program
, Если Вы хотите использовать его, это прекрасно (просто быть подготовленным, что apt-get
может иметь вЂnice’ привычку к уничтожению вещей если не используемый мудро, не используйте нечетный ppa или очень вокруг также навоза с зависимостями) , но если бы Вы хотите зарегистрировать об установке программы, я рекомендовал бы использованию один из двух или трех лайнеров (без -y
) , поскольку это позволяет пользователю больше управления тем, что происходит, делая их более счастливыми и предотвращающими противными несчастными случаями (и как @Zacharee1 говорит, легче понять, учиться, & помните как отдельные строки - новые пользователи не могут понять, что они могут выделить строки или могут предположить, что как команда (команды) в одной строке являются такими длинными, что они, очевидно, могут сделать что-то злое)
приблизительно &&
и т.д. примеры:
$ true && echo "this will show output as that thing ← said it exited successfully"
this will show output as that thing ← said it exited successfully
$ false && echo "this won't"
$ false || echo "but this will"
but this will
$ true || echo "weird init?"
$ true ; echo " ← and this"
and this
$ false ; echo "doesn't care"
doesn't care
$ echo $?
0
$ echo "previous exit code ↑" ; true
previous exit code ↑
$ echo "previous exit code ↑"
previous exit code ↑
$