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.