install -c与cp有何不同


20

install -c和cp有什么区别?大多数安装都倾向于使用install -c,但是从手册页看,它听起来似乎与cp没什么不同(也许设置权限除外)。什么时候应该使用install -c和cp?

Answers:


18

一个重要的区别是cp会截断目标文件,并开始将数据从源复制到目标文件中。

另一方面,install首先删除目标文件。

这一点很重要,因为如果目标文件已在使用中,则使用该文件的任何人都可能发生坏事,以防您在cp该文件之上添加新文件。例如,覆盖正在运行的可执行文件可能会失败。截断现有进程正在忙于读取/写入的数据文件可能会导致非常奇怪的行为。如果您只是先删除目标文件(就像安装一样),则事情将像正常情况一样继续进行-删除的文件实际上不会删除,直到所有进程关闭该文件为止。


3
好答案。但另请参见cp --remove-destinationGNU coreutils。
Peter Eisentraut 2014年

7

从技术上讲,之间的区别install -c,并cpinstall将目标文件的权限rwxr-xr-xcp保留源文件的权限减去umask。这些默认行为在不同情况下很有用。显然,通过当今cpinstall现在提供的所有选项,功能已经融合。

如今,installmakefile以及cp其他任何地方都普遍使用该文件。这种区别有时很有用,因为某些操作系统或安装系统允许您挂接到install程序中以注册已安装的软件包。现代的软件包管理系统使这种方法过时了,但是仍然有人使用它。同样,可以一次设置目标文件权限的可能性非常方便。


4

install根本上说,该实用程序是花哨的cp。但是作为专门用于安装的工具,它包含一些cp不具备的功能。我/usr/bin/install从GNU的coreutils不仅副本,但也可以改变烫发/所有权ARG标志(节能chgrpchownchmod调用)的选项条调试信息(保存strip调用),也有一些魔力SELinux的上下文。

它只是提供了对软件安装有用的便捷操作。没有什么能改变生活,所有都是有用的,并且可以使脚本更整洁。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.