要从 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
它们之间有技术上的区别吗?
答案1
&&
仅当前一个命令/命令链成功执行后,操作员才会执行以下命令。
因此,这些案件的含义是:
脚本会执行所有命令,无论
脚本执行
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
答案2
如果;
使用,它们会相同,但&&
只有当它之前的命令发送退出代码表示它已成功退出时才会继续。如果一切顺利,它将自动继续,并且只会停止提示用户询问他们是否要添加 PPA 以及是否要安装该软件包。如果程序生成的所有退出代码都是准确的,它也可能比三行代码更好地工作,因为用户可以继续输入命令而不会注意到第一个或第二个失败。
如果要一直自动继续,请执行以下操作:
sudo add-apt-repository -y example/ppa && sudo apt-get update && sudo apt-get install -y example-program
如果你想用它,没问题(只是要做好准备,apt-get
如果使用不当,可能会有破坏事物的“好”习惯,所以不要使用奇怪的 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 ↑
$
答案3
那里的所有东西都是一样的。我认为它通常按原样列出的原因是因为这样看起来更好,也更容易记住,因为命令被分开了。