我在这个维基页面上看到了:软件包管理器故障排除流程。
页面中有一些命令,例如:
那么,
页面中有一些命令,例如:
LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000
LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade
那么,
LANG=C;
的目的是什么?
LANG=C command
而不是LANG=C;command
。第一种形式强制在command
的持续时间内使用LANG
环境变量的值,而第二种形式实际上是两个命令,其中第一部分只设置一个本地(未导出)变量,第二部分运行命令而不设置所需的环境变量。 - GussLANG
在环境中,所以它可能会与多余的分号一起工作;但这是(1)多余的,因为在命令之间不会改变LANG
。此外,提示某人以这种方式运行命令是(2)错误的,因为这样做会不必要地和未经邀请地改变环境,并且(3)这为任何不了解情况的用户提供了一个错误的模式,后续再次应用时可能使用一个不在环境中的shell变量,从而对需要正确、可能安全地运行的命令产生任何影响。 - FooFLANG=C;sudo apt-get
而不是LANG=C sudo apt-get
? - Rui F RibeiroLANG=C;
是原文如何写的。除了省略了我问题中没有提到LANG=C;
的命令之外,我没有做任何修改。 - DK BoseLANG=C ;
),它会在命令之间发生变化,并且在后续命令中添加LANG=C ;
是多余的。因此,即使问题中的示例可以工作,它确实是误导性的,我同意你和其他人指出这一点的观点。页面EnvironmentVariables对此进行了更好的解释。 - Gunnar Hjalmarsson