install 和 cp 有什么不同?

tar*_*yte 18 cp software-installation file-copy

如何install从一个简单的副本不同,cp还是dd?我刚刚编译了一个小实用程序,并想将其添加到其中,/usr/sbin以便通过我的PATH变量可用。为什么使用一个 vs 另一个?

cak*_*uzo 18

要“安装”从源代码编译的二进制文件,最佳做法是将其放在目录下:

/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

在某些系统上,路径已经在您的 PATH 变量中,如果没有,您可以通过在您的配置文件配置文件之一中调整 PATH 变量来添加它 ~/.bashrc ~/.profile

PATH=${PATH}:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

dd 是一种低级复制工具,主要用于复制源的精确大小的块,例如文件或设备。

cp是使用选项递归复制文件和目录的常用命令,并使用选项-r保留权限-p

install大部分类似于cp但另外提供了直接设置目标文件属性的选项,而无需chmod单独使用。

cp您的文件/usr/local/binPATH根据需要调整变量。这就是我会做的。

  • 如果您对为什么应该将它放在 /usr/local/ 下感兴趣,这里有一个很好的答案:http://unix.stackexchange.com/questions/8656/usr-bin-vs-usr-local-bin -on-linux (2认同)

fd0*_*fd0 9

使用默认模式 755 安装副本文件。

安装可以配置为设置文件的所有者或组和/或文件的模式。

安装可以配置为在替换之前备份原始文件。


mar*_*cin 9

install和之间的主要区别在于cp,如果目标文件已经存在,install则首先取消链接。

手册页中没有指出这种差异。其他答案中列出的内容也很重要——两个程序都有不同的选项,而且 GNUinstall与 BSD 有不同的选项,install因此可移植的 Makefile 仅限于一个公共子集。

为什么取消链接(也可以由rmbefore完成cp)很重要?如果您有一个带有两个硬链接的文件并使用其中一个硬链接对其进行修改,那么它也会在文件系统的另一个位置进行修改。但是,如果您先删除其中一个硬链接并用修改后的文件替换它,则另一个地方保留原始版本。

更可能的情况是您在使用程序或库时更新它。如果先取消链接二进制文件,则不会影响正在运行的程序。这是一篇包含更多详细信息的好帖子:http : //en.chys.info/2009/05/install-vs-cp-and-mmap/

  • 存档链接在这里:https://web.archive.org/web/20090624104441/http://en.chys.info/2009/05/install-vs-cp-and-mmap/ (3认同)