install -c 与 cp 有何不同

sli*_*cki 21 linux bash sh cp installation

install -c和 和有cp什么区别?大多数安装都倾向于使用install -c,但从man页面上看,它听起来并没有什么不同cp(除了可能还设置权限的能力)。我应该什么时候使用install -c,什么时候使用cp

nos*_*nos 20

一个显着的区别是 cp 截断目标文件并开始将数据从源复制到目标文件。

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

这很重要,因为如果目标文件已经在使用中,那么使用该文件的任何人都可能会发生不好的事情,以防万一你cp在它上面有一个新文件。例如,覆盖正在运行的可执行文件可能会失败。截断现有进程正忙于读/写的数据文件可能会导致非常奇怪的行为。如果您只是先删除目标文件,就像安装一样,事情会像往常一样继续 - 在所有进程关闭该文件之前,实际上不会删除被删除的文件。

  • 好答案。但另请参阅 GNU coreutils 中的 `cp --remove-destination`。 (3认同)

Pet*_*aut 9

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

如今,install通常用于makefile,cp其他地方。这种区别有时很有用,因为某些操作系统或安装系统允许您挂接到install程序以注册已安装的包。现代包管理系统使这种方式过时了,但有些人仍在使用它。此外,在同一个 go 中设置目标文件权限的可能性非常方便。


Ric*_*lka 5

install从本质上讲,该实用程序是一种奇特的cp。但作为专门安装的工具,它包含一些cp不安装的功能。我的/usr/bin/installGNU coreutils 不仅可以复制,还可以将权限/所有权更改为 arg 标志(保存chgrp、调用)、删除调试信息chownchmod保存调用)的选项strip以及 SELinux 上下文的一些魔力。

它只是提供对软件安装有用的便捷操作。没有一个会改变生活,所有这些都是有用的,并且可以让你的脚本更干净。