Yanıtlar:
Önemli bir fark, cp'nin hedef dosyayı kesmesi ve verileri kaynaktan hedef dosyaya kopyalamaya başlamasıdır.
install, diğer taraftan, önce hedef dosyayı kaldırır.
Bu önemlidir, çünkü hedef dosya zaten kullanılıyorsa, cp
üstünde yeni bir dosya olması durumunda bu dosyayı kullanan herkesin başına kötü şeyler gelebilir . örneğin, çalışan bir yürütülebilir dosyanın üzerine yazmak başarısız olabilir. Varolan bir işlemin okuma / yazma işlemiyle meşgul olduğu bir veri dosyasının kesilmesi oldukça garip davranışlara neden olabilir. Önce hedef dosyayı kaldırırsanız, yükleme işlemi gibi, işler normal gibi devam eder - kaldırılan dosya aslında tüm işlemler o dosyayı kapatana kadar kaldırılmaz.
Teknik olarak, arasındaki fark install -c
ve cp
olmasıdır install
oluşturduğunun hedef dosyasının izinlerini rwxr-xr-x
. cp
umask eksi kaynak dosyasının izinlerini korur. Bu varsayılan davranışlar farklı durumlarda kullanışlıdır. Seçenekleri ile tüm Açıkçası, hem cp
ve install
teklif günümüzde, işlevsellikleri birbirine yaklaştı.
Günümüzde, diğer her yerde install
makyaj malzemelerinde yaygın olarak kullanılmaktadır cp
. Bazı işletim sistemleri veya kurulum sistemleri install
kurulu paketleri kaydetmek için programa bağlanmanıza izin verdiği için bu ayrım bazen yararlıdır . Modern paket yönetim sistemleri bu türden eskimiş, ancak bazı insanlar hala kullanıyor. Ayrıca, aynı anda hedef dosya izinlerini ayarlama olasılığı çok uygundur.
install
Programı, tabanında, bir fantezi cp
. Ancak, özellikle bir araç yüklerken, cp
yapmayan birkaç özellik içerir . Benim /usr/bin/install
GNU coreutils gelen sadece kopyalar, aynı zamanda arg bayrakları (kaydetme gibi Perma / sahipliğini değiştirebilir chgrp
, chown
, chmod
invokasyonlar) şerit ayıklama bilgi (bir tasarruf için bir seçenek strip
çağırma) ve ayrıca SELinux'un bağlamlar için bazı güçlerin artık.
Yalnızca yazılım yüklemeleri için kullanışlı kolaylık eylemleri sağlar. Hiçbiri hayat değiştirmez, hepsi yararlıdır ve komut dosyalarınızı daha temiz hale getirir.
cp --remove-destination
. GNU coreutils.