Каково различие между установкой-c и CP? Большинство установок имеет тенденцию использовать установку-c, но из страницы справочника она не кажется, что делает что-либо различное, чем CP (кроме, возможно, полномочий набора). Когда я должен использовать установку-c и когда CP?
Одна значительная разница - то, что CP усекает целевой файл и начинает копировать данные из источника в целевой файл.
установка, с другой стороны, удаляет целевой файл сначала.
Это значительно, потому что, если целевой файл уже является используемыми, плохими вещами, мог бы произойти с тем, кто бы ни использует тот файл в случае, если Вы cp
новый файл сверху его. например, перезапись исполняемого файла, который работает, могла бы перестать работать. Усечение файла данных, в который существующий процесс занят, читая/пишущий, могло вызвать довольно странное поведение. Если Вы просто удаляете целевой файл сначала, как установка делает, вещи продолжаются во многом как нормальный - удаленный файл на самом деле не удален до всех процессов близко тот файл.
Технически, различие между install -c
и cp
это install
устанавливает полномочия конечного файла к rwxr-xr-x
. cp
сохраняет полномочия исходного файла минус umask. Эти поведения по умолчанию полезны в различных ситуациях. Очевидно, со всеми опциями это оба cp
и install
предложите в наше время, технические возможности сходились.
В наше время, install
является наиболее часто используемым в make-файлах, cp
везде еще. Это различие иногда полезно, потому что некоторые операционные системы или системы установки позволяют Вам сцепляться в install
программа для регистрации установленных пакетов. Современные системы управления пакета делают это довольно устаревшим, но некоторые люди все еще используют его. Кроме того, возможность установить полномочия конечного файла в том же движение очень удобна.
install
утилита, в ее основе, является воображением cp
. Но как инструмент конкретно делают установки, он содержит несколько функций это cp
не делает. Мой /usr/bin/install
от GNU coreutils не только копирует, но также и может изменить перманент/владение, поскольку аргумент отмечает (сохранение chgrp
, chown
, chmod
вызовы) опция разделить информацию об отладке (сохраняющий a strip
вызов) и также некоторое заклинание для контекстов SELinux.
Это просто обеспечивает действия удобства, полезные для установок программного обеспечения. Ни один не является судьбоносным, все полезны, и делают Ваш инструмент для очистки сценариев.