从 ppa 安装时使用的命令顺序

从 ppa 安装时使用的命令顺序

要从 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

&&仅当前一个命令/命令链成功执行后,操作员才会执行以下命令。

因此,这些案件的含义是:

  1. 脚本会执行所有命令,无论

  2. 脚本执行sudo add-apt-repository example/programsudo apt-get update无论sudo apt-get install example-program是否成功sudo apt-get update

  3. 脚本仅在成功后才会执行,sudo add-apt-repository example/program无论sudo apt-get updatesudo add-apt-repository example/programsudo apt-get install example-program

  4. 脚本只会在成功后执行sudo add-apt-repository example/program,并且只有在成功后才会执行sudo apt-get updatesudo add-apt-repository example/programsudo apt-get install example-programsudo 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

那里的所有东西都是一样的。我认为它通常按原样列出的原因是因为这样看起来更好,也更容易记住,因为命令被分开了。

相关内容