Ich versuche, colordiff
in einem benutzerdefinierten Verzeichnis zu installieren, da ich keine sudo
Berechtigungen habe. Ich habe die Verzeichnisse im Makefile fest codiert, wie in der README-Datei angegeben, aber ich erhalte den folgenden Fehler:
...
chown root.root /share/edu-mei/colordiff/1.0.13/etc/colordiffrc
chown: changing ownership of `/share/edu-mei/colordiff/1.0.13/etc/colordiffrc': Operation not permitted
make: [install] Error 1 (ignored)
...
Das Ändern des Dateibesitzes ist kein wirkliches Problem (wahrscheinlich der Grund, warum der Autor dies ignoriert). Ich bin jedoch nicht mit dieser Verwendung von vertraut chown
.
Die Manpage von chown besagt, dass die Befehlssyntax lautet:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
Der ausgeführte Befehl lautet jedoch chown root.root $file
.
Was bedeutet die Syntax mit einem Punkt anstelle eines Doppelpunkts?
Antworten:
Es setzt den Benutzer und die Gruppe von
$file
aufroot
(wie inchown OWNER.GROUP FILE...
). Es ist das gleiche wie anrufenchown root:root $file
, aber eine ältere Form.Der Punkt wurde durch einen Doppelpunkt ersetzt, der
chown OWNER:GROUP FILE...
wie dokumentiert angegeben ist, da Punkte möglicherweise in Benutzer- / Gruppennamen erscheinen können.quelle
as documented
Könntest du einen Link geben? Auch Android scheint Punkt zu verwenden und Doppelpunkt abzulehnen, was auch unklar ist, warum.chown [OPTION]... [OWNER][:[GROUP]] FILE...
, die eindeutig nur einen Doppelpunkt zeigt. Android kann eine von vielen verschiedenen Chown-Varianten haben; Busybox Chown ist üblich und unterstützt sowohl.
und:
. Andere können sich anders verhalten."chown user.group file" war die alte Methode, mit chown sowohl Benutzer als auch Gruppe für eine Datei festzulegen. Diese Notation ist jetzt veraltet und Sie sollten stattdessen ":" verwenden, wie in "chown user: group file".
"$ file" ist nur eine Shell-Variable. Wahrscheinlich haben Sie ein Skript, das einen Befehl (chown) für eine Liste von Dateinamen wiederholt. Die Variable "$ file" enthält den Dateinamen, der gerade verarbeitet wird, und ändert sich für jede "Runde", die das Skript durchläuft, bis die Liste (alle Dateinamen) verarbeitet wurde (deren Eigentümer und Gruppe auf root: root gesetzt wurden). .
quelle
$file
ist meine eigene Art, den Dateinamen auszudrücken