Ein wesentlicher Unterschied besteht darin, dass cp die Zieldatei abschneidet und mit dem Kopieren von Daten von der Quelle in die Zieldatei beginnt.
install hingegen entfernt zuerst die Zieldatei.
Dies ist wichtig, denn wenn die Zieldatei bereits verwendet wird, können schlimme Dinge demjenigen passieren, der diese Datei verwendet, falls Sie cp
eine neue Datei darüber. z.B. Das Überschreiben einer laufenden ausführbaren Datei schlägt möglicherweise fehl. Das Abschneiden einer Datendatei, in die ein vorhandener Prozess gerade liest/schreibt, kann zu einem ziemlich seltsamen Verhalten führen. Wenn Sie einfach zuerst die Zieldatei entfernen, wie es bei der Installation der Fall ist, gehen die Dinge ganz normal weiter - die entfernte Datei wird nicht wirklich entfernt, bis alle Prozesse diese Datei schließen.
Technisch gesehen ist der Unterschied zwischen install -c
und cp
ist das install
setzt die Berechtigungen der Zieldatei auf rwxr-xr-x
. cp
behält die Berechtigungen der Quelldatei abzüglich der umask bei. Diese Standardverhalten sind in verschiedenen Situationen nützlich. Natürlich mit allen Optionen, die beide cp
und install
bieten, sind die Funktionalitäten konvergiert.
Heute install
wird häufig in Makefiles verwendet, cp
überall sonst. Diese Unterscheidung ist gelegentlich sinnvoll, da einige Betriebssysteme oder Installationssysteme es Ihnen erlauben, sich in die install
einzuklinken Programm zum Registrieren der installierten Pakete. Moderne Paketverwaltungssysteme machen diese Art obsolet, aber einige Leute verwenden sie immer noch. Sehr praktisch ist auch die Möglichkeit, die Zieldatei-Berechtigungen im selben Arbeitsgang zu setzen.
Die install
Utility ist an seiner Basis ein schickes cp
. Aber als spezielles Tool zum Installieren enthält es einige Funktionen, die cp
nicht. Mein /usr/bin/install
von GNU Coreutils kopiert nicht nur, sondern kann auch Perms/Ownership als Argument-Flags ändern (Speichern von chgrp
, chown
, chmod
Aufrufe) eine Option zum Entfernen von Debug-Informationen (Speichern eines strip
Aufruf) und auch etwas Mojo für SELinux-Kontexte.
Es bietet nur praktische Aktionen, die für Softwareinstallationen nützlich sind. Keine ändert das Leben, alle sind nützlich und machen Ihre Skripte sauberer.