![Das Ändern des Ordnerbesitzers funktioniert nicht!](https://rvso.com/image/1083740/Das%20%C3%84ndern%20des%20Ordnerbesitzers%20funktioniert%20nicht!.png)
Ich versuche, den Besitz eines Ordners und von Unterordnern zu ändern, indem ich Folgendes eingebe:
sudo chown $user -R /usr/bin/.folder/
sudo chown $user -R /usr/bin/folder/
sudo chown $user -R /usr/bin/.folder
sudo chown $user -R /usr/bin/folder
Aber ich bekomme die Ausgabe:
chown: missing operand after '/usr/bin/.folder/'
Was mache ich falsch?
Antwort1
Warum Kleinbuchstaben $user
nicht funktionieren
Um zu klären und zu erweitern, was anderehaben sagte, Shell- und Umgebungsvariablen sind case-sensitiv. user
und USER
sind unterschiedliche Variablen, daher können ihre Inhalte (which $user
bzw. $USER
expand to) unterschiedlich sein. Normalerweise user
ist keine Variable mit dem Namen definiert und $user
wird zu nichts erweitert, während Sie which $USER
zu Ihrem Benutzernamen erweitern möchten.
echo
Um den Wert einer Variablen zu prüfen eignet sich in der Regel der folgende Befehl:
$ echo "$user"
$ echo "$USER"
ek
Bei Variablen, deren Werte keine Leerzeichen enthalten, können die Anführungszeichen entfernt werden, ohne dass dies Auswirkungen auf die Ausgabe hat.
Ich hätte also einfach verwenden können, echo $USER
wenn ich gewollt hätte.
Eine weitere Option fürchown
Sie kennen wahrscheinlich Ihren eigenen Benutzernamen, also können Sie ihn einfach anstelle von verwenden $USER
. Wenn Sie dies tun,$
Achten Sie darauf, das Zeichen wegzulassen.
Da mein Benutzername beispielsweise ist ek
, könnte ich Folgendes verwenden:
sudo chown ek -R /usr/bin/.folder/
Warum Sie bekommenDasFehler
Sie fragen sich vielleicht, warum Sie diese spezielle Fehlermeldung erhalten:
chown: missing operand after '/usr/bin/.folder/'
Diese Meldung ist tatsächlich informativ, denn wenn Sie eine solche Meldung von einem Befehl sehen, bei dem Sie Variablen erweitert haben, deutet dies darauf hin, dass eine oder mehrere Ihrer erweiterten Variablen möglicherweise unbeabsichtigt leer oder nicht festgelegt waren.
Sie haben ausgeführt sudo chown $user -R /usr/bin/.folder/
, und da user
wahrscheinlich nicht definiert war, $user
wurde es ins Leere erweitert und es war gleichbedeutend mit der Ausführung von:
sudo chown -R /usr/bin/.folder/
Die -R
Option wirkt chown
auf jede Datei in einem Verzeichnisbaum, wie Sie wahrscheinlich wissen. Da $user
nichts erweitert wurde, /usr/bin/.folder/
war die erstekeine OptionArgument für chown
und wurde daher als Argument interpretiert, das den gewünschten Besitz angibt (z. B. einen Benutzernamen). /usr/bin/.folder
ist keine gültige Syntax dafür, aber dieser spezielle Fehler wurde nicht gemeldet, weil ein anderer Fehler chown
zuerst gestoppt wurde: Es gab keine weiteren Argumente und daher wurde nichts für chown
den Betrieb angegeben.An.
Anders ausgedrückt: Wenn ich ausführe sudo chown $USER -R /usr/bin/.folder/
, würde es zu erweitert sudo chown ek -R /usr/bin/.folder/
und chown
seine Argumente folgendermaßen interpretiert:
ek
: Benutzername, da noch kein Benutzername-Argument übergeben wurde-R
: rekursive Option (am Anfang-
erkennt man, dasschown
es sich um ein Optionsargument handelt)/usr/bin/.folder/
: Datei oder Verzeichnis, dessen Eigentümer geändert werden soll, da der Benutzername bereits übergeben wurde
Wenn ich jedoch ausführe sudo chown $user -R /usr/bin/.folder
, würde es zu erweitert sudo chown -R /usr/bin/.folder/
und chown
seine Argumente folgendermaßen interpretiert:
-R
: rekursive Option/usr/bin/.folder/
: Benutzername, da noch kein Benutzername-Argument übergeben wurde
Weitere Informationen
Weitere Informationen, die Sie interessieren könnten:
Antwort2
Bitte verwenden Sie $USER
anstelle von $user
.
sudo chown $USER -R /usr/bin/.folder/
Antwort3
Die user
Variable ist wahrscheinlich leer. Versuchen Sie es mit $USER
.