Odpowiedzi:
Jedną znaczącą różnicą jest to, że cp obcina plik docelowy i rozpoczyna kopiowanie danych ze źródła do pliku docelowego.
Z drugiej strony install najpierw usuwa plik docelowy.
Jest to znaczące, ponieważ jeśli plik docelowy jest już w użyciu, mogą się przydarzyć złe rzeczy każdemu, kto używa tego pliku, na wypadek gdyby na nim cp
był nowy plik. np. nadpisanie uruchomionego pliku wykonywalnego może się nie powieść. Obcinanie pliku danych, który jest zajęty przez proces odczytu / zapisu, może spowodować dość dziwne zachowanie. Jeśli najpierw usuniesz plik docelowy, podobnie jak podczas instalacji, wszystko będzie wyglądać normalnie - usunięty plik nie zostanie faktycznie usunięty, dopóki wszystkie procesy nie zamkną tego pliku.
Technicznie różnica między install -c
i cp
polega na tym, że install
ustawia uprawnienia do pliku docelowego na rwxr-xr-x
. cp
zachowuje uprawnienia do pliku źródłowego minus umask. Te domyślne zachowania są przydatne w różnych sytuacjach. Oczywiście, ze wszystkimi opcjami, że zarówno cp
i install
oferta w dzisiejszych czasach, które zbiegały funkcjonalności.
Obecnie install
jest powszechnie stosowany w plikach makefile, cp
wszędzie indziej. To rozróżnienie jest czasami przydatne, ponieważ niektóre systemy operacyjne lub systemy instalacyjne umożliwiają podpięcie się do install
programu w celu zarejestrowania zainstalowanych pakietów. Nowoczesne systemy zarządzania pakietami sprawiają, że ten rodzaj jest przestarzały, ale niektórzy nadal go używają. Również możliwość ustawienia uprawnień do pliku docelowego w tym samym czasie jest bardzo wygodna.
install
Narzędzie, na jej podstawie, jest fantazyjne cp
. Ale jako narzędzie specjalnie instaluje, zawiera kilka funkcji, które cp
tego nie robią. My /usr/bin/install
z coreutils GNU nie tylko kopiuje, ale może także zmienić perms / własność jako flagi Arg (oszczędności chgrp
, chown
, chmod
inwokacje) Opcjonalnie do informacji pasek debugowania (oszczędność na strip
wezwanie), a także niektóre mojo dla kontekstów SELinux.
Zapewnia jedynie wygodne czynności przydatne przy instalowaniu oprogramowania. Żadne z nich nie zmienia życia, wszystkie są przydatne i sprawiają, że twoje skrypty są czystsze.
cp --remove-destination
w jądrach GNU.