平时我们会用到 yum install
、make install
等等包含install的命令,其实这里的install并时不是yum,make的参数,它也是一条命令。
如下图两条命令,都是把passwd文件拷贝到/opt目录下,那么他们之间有什么区别呢?
第一点:
install复制时可以指定权限,而cp不行。
注:install命令会恰当地处理文件权限的问题,也就是按实际情况分配。比如说,install -c会把目标文件的权限设置为rwxr-xr-x;
如下命令,我们可以使用intall命令来拷贝文件并分配文件权限777
查看权限:
可以看到
a.txt:使用命令cp,权限和原文件相同为644。
b.txt:使用命令install指定777权限。
passwd:未指定权限,因为安装一般需要执行,所以分配到的权限为755。(不指定权限,install一般分配为755)
第二点:
如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件。这是因为往正在使用的文件中写入内容可能会导致一些问题,比如说写入正在执行的文件可能会失败,比如说往已经在持续写入的文件句柄中写入新文件会产生错误的文件。而使用install先删除后写入(会生成新的文件句柄)的方式去安装就能避免这些问题了;
例如,在文件执行的时候cp,会报错Text file busy
。而使用intsall命令则可以解决这个问题。