Das Ändern des Ordnerbesitzers funktioniert nicht!

Das Ändern des Ordnerbesitzers funktioniert nicht!

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 $usernicht funktionieren

Um zu klären und zu erweitern, was anderehaben sagte, Shell- und Umgebungsvariablen sind case-sensitiv. userund USERsind unterschiedliche Variablen, daher können ihre Inhalte (which $userbzw. $USERexpand to) unterschiedlich sein. Normalerweise userist keine Variable mit dem Namen definiert und $userwird zu nichts erweitert, während Sie which $USERzu Ihrem Benutzernamen erweitern möchten.

echoUm 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 $USERwenn 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 userwahrscheinlich nicht definiert war, $userwurde es ins Leere erweitert und es war gleichbedeutend mit der Ausführung von:

sudo chown -R /usr/bin/.folder/

Die -ROption wirkt chownauf jede Datei in einem Verzeichnisbaum, wie Sie wahrscheinlich wissen. Da $usernichts erweitert wurde, /usr/bin/.folder/war die erstekeine OptionArgument für chownund wurde daher als Argument interpretiert, das den gewünschten Besitz angibt (z. B. einen Benutzernamen). /usr/bin/.folderist keine gültige Syntax dafür, aber dieser spezielle Fehler wurde nicht gemeldet, weil ein anderer Fehler chownzuerst gestoppt wurde: Es gab keine weiteren Argumente und daher wurde nichts für chownden 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 chownseine Argumente folgendermaßen interpretiert:

  • ek: Benutzername, da noch kein Benutzername-Argument übergeben wurde
  • -R: rekursive Option (am Anfang -erkennt man, dass chownes 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 chownseine 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 $USERanstelle von $user.

sudo chown $USER -R /usr/bin/.folder/

Antwort3

Die userVariable ist wahrscheinlich leer. Versuchen Sie es mit $USER.

verwandte Informationen