web-dev-qa-db-fra.com

Changer de propriétaire du dossier ne fonctionne pas!

J'essaie de changer la propriété d'un dossier et de sous-dossiers en tapant l'un de ces éléments:

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

Mais je reçois la sortie:

chown: missing operand after '/usr/bin/.folder/'

Qu'est-ce que je fais mal?

5
A H

Pourquoi les lettres minuscules $user ne fonctionnent pas

Pour clarifier et développer ce que les autres ontdit , les variables d'environnement et d'environnement sont sensibles à la casse. useret USERsont des variables différentes, donc leur contenu (auquel $user et $USER se développent, respectivement) peut être différent. En règle générale, aucune variable nommée usern'est définie et $user est étendu à zéro, alors que vous souhaitez utiliser, c'est $USER qui serait étendu à votre nom d'utilisateur.

La commande echoconvient généralement à la vérification de la valeur d'une variable:

$ echo "$user"

$ echo "$USER"
ek

Pour les variables dont les valeurs ne contiennent aucun espace, les guillemets peuvent être supprimés sans affecter la sortie.
J'aurais donc pu simplement utiliser echo $USER si je le voulais.

Une autre option, pour chownname__

Vous connaissez probablement votre propre nom d'utilisateur, vous pouvez donc l'utiliser à la place de $USER. Si vous faites cela, veillez à omettre le signe $ .

Par exemple, étant donné que mon nom d'utilisateur est ekname__, je pourrais utiliser:

Sudo chown ek -R /usr/bin/.folder/

Pourquoi vous obtenez cette erreur

Vous vous demandez peut-être pourquoi vous obtenez ce message d'erreur particulier:

chown: missing operand after '/usr/bin/.folder/'

Ce message est en fait informatif. En effet, lorsque vous voyez un message comme celui-ci dans une commande dans laquelle vous avez développé des variables, cela suggère qu'une ou plusieurs de vos variables développées ont peut-être été involontairement vides ou non définies.

Vous avez exécuté Sudo chown $user -R /usr/bin/.folder/, et comme userétait probablement indéfini, $user a été étendu à rien et cela équivaut à exécuter:

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

L'option -R fait que chownagit sur chaque fichier d'une arborescence de répertoires, comme vous le savez probablement. $user étant devenu nul, /usr/bin/.folder/ était le premier argument non-option à chownet était donc interprété comme l'argument spécifiant le propriétaire souhaité (tel qu'un Nom d'utilisateur). /usr/bin/.folder n'est pas une syntaxe valide pour cela, mais cette erreur particulière n'a pas été signalée car une erreur différente a arrêté chownen premier: il n'y avait plus d'arguments, et il n'y avait donc aucun paramètre spécifié pour que chowns'exécute sur .

En d'autres termes, si j'exécutais Sudo chown $USER -R /usr/bin/.folder/, il serait étendu à Sudo chown ek -R /usr/bin/.folder/ et chowninterpréterait ses arguments de la manière suivante:

  • ekname__: nom d'utilisateur, car aucun argument de nom d'utilisateur n'a encore été passé
  • -R: option récursive (le - qui précède est ce qui permet à chownde savoir que c'est un argument d'option)
  • /usr/bin/.folder/: fichier ou répertoire sur lequel changer de propriétaire, puisque le nom d'utilisateur a déjà été transmis

Mais si j’exécutais Sudo chown $user -R /usr/bin/.folder, il serait étendu à Sudo chown -R /usr/bin/.folder/ et chowninterpréterait ses arguments de la manière suivante:

  • -R: option récursive
  • /usr/bin/.folder/: nom d'utilisateur, car aucun argument de nom d'utilisateur n'a encore été passé

Lectures supplémentaires

Pour plus d'informations, vous pouvez être intéressé par:

9
Eliah Kagan

Veuillez utiliser $USER au lieu de $user.

Sudo chown $USER -R /usr/bin/.folder/
5
ATR

La variable user est probablement vide. Essayez $USER.

2
muru